{"action":"created","comment":{"url":"https://api.github.com/repos/fanf/rudder/pulls/comments/69907973","id":69907973,"diff_hunk":"@@ -138,71 +138,77 @@ class ReportDisplayer(\n       val dateFormat = DateTimeFormat.forPattern(\"YYYY-MM-dd HH:mm:ss\")\n \n       def currentConfigId(expectedConfigInfo: NodeConfigIdInfo) = {\n-        s\"Current configuration ID for the node is '${expectedConfigInfo.configId.value}' (generated on ${expectedConfigInfo.creation.toString(dateFormat)})\"\n+        s\"Current configuration ID for this node is '${expectedConfigInfo.configId.value}' (generated on ${expectedConfigInfo.creation.toString(dateFormat)}).\"\n       }\n \n       info match {\n         case ComputeCompliance(lastRunDateTime, expectedConfigInfo, expirationDateTime, missingReportStatus) =>\n           (\n+            <p>This node has up to date policy and the agent is running. Reports below are from the latest run, which started on the node at {lastRunDateTime.toString(dateFormat)}.</p>\n             <p>{currentConfigId(expectedConfigInfo)}.</p>\n-            <p>Last complete agent run has correct configuration ID, started on node at {lastRunDateTime.toString(dateFormat)}.</p>\n           )\n \n         case Pending(expectedConfigInfo, optLastRun, expirationDateTime, missingReportStatus) =>\n           val runInfo = optLastRun match {\n-            case None => \"No recent runs received for this node\"\n+            case None => \"No recent reports have been received for this node. Check that the agent is running (run 'rudder agent check' on the node).\"\n             case Some((date, id)) =>\n-              s\"Last run for node started at ${date.toString(dateFormat)} for configuration ID ${id.configId.value} \" +\n               (id.endOfLife match {\n-                case None => \"\"\n-                case Some(exp) => s\"which expired at ${exp.toString(dateFormat)}\"\n+                case None => s\"This is expected, the node is reporting on the previous configuration policy and should report on the new one at latest ${expirationDateTime.toString(dateFormat)}. Previous known states are displayed below.\"\n+                case Some(exp) => s\"This is unexpected, since the node is reporting on a configuration policy that expired at ${exp.toString(dateFormat)}.\"\n               })\n+              + s\" The latest reports received for this node are from a run started at ${date.toString(dateFormat)} with configuration ID ${id.configId.value}.\"\n           }\n           (\n-            <p>{currentConfigId(expectedConfigInfo)}.</p>\n-            <p>The node is expected to send a report for that configuration ID before {expirationDateTime.toString(dateFormat)} but no reports\n-               have been received yet. If that state persists, check that the agent is running.</p>\n+            <p>This node has recently been assigned a new policy but no reports have been received for the new policy yet.</p>\n             <p>{runInfo}</p>\n+            <p>{currentConfigId(expectedConfigInfo)}.</p>\n           )\n \n         case NoReportInInterval(expectedConfigInfo) =>\n           (\n+            <p>No recent reports have been received for this node in the grace period since the last configuration policy change. This is unexpected. Please check the status of the agent by running 'rudder agent health' on the node.</p>\n             <p>{currentConfigId(expectedConfigInfo)}.</p>\n-            <p>No recent runs were received for node, and the grace period to receive them expired.</p>\n           )\n \n         case NoRunNoExpectedReport =>\n-          <p>No configuration ID and no run received for that node. It may have been accepted after the last policy regeneration.</p>\n+          <p>This is a new node that does not yet have a configured policy. If a policy generation is in progress, this will apply to this node when it is done.</p>\n \n         case NoExpectedReport(lastRunDateTime, lastRunConfigId) =>\n           val configIdmsg = lastRunConfigId match {\n-            case None     =>  \"without any configuration ID, when one was required\"\n-            case Some(id) => s\"with configuration ID '${id.value}' that is unknown in Rudder base\"\n+            case None     =>  \"without a configuration ID, although one is required\"\n+            case Some(id) => s\"with configuration ID '${id.value}' that is unknown to Rudder\"\n           }\n \n-          <p>The node sent a run (started at {lastRunDateTime.toString(dateFormat)}) {configIdmsg}. Either that configuration ID was deleted from Rudder DB or\n-             the node is sending a corrupted configuration ID. You should update node policies with \"rudder agent update -f\", and if the problem persists,\n-             try to regenerate policies with the \"clear cache\" action.</p>\n+          <p>This node has no configuration policy assigned to it, but reports have been received for it {configIdmsg} (run started at {lastRunDateTime.toString(dateFormat)}).\n+             Either this node was deleted from Rudder but still has a running agent or the node is sending a corrupted configuration ID.\n+             Please run \"rudder agent update -f\" on the node to force a policy update and, if the problem persists,\n+             force a policy regeneration with the \"Clear caches\" button in Administration > Settings.</p>\n \n         case UnexpectedVersion(lastRunDateTime, Some(lastRunConfigInfo), lastRunExpiration, expectedConfigInfo, expectedExpiration) =>\n           (\n-            <p>{currentConfigId(expectedConfigInfo)} but we received a run, started at {lastRunDateTime.toString(dateFormat)}, with a different configuration ID ({expectedConfigInfo.configId.value}).</p>\n-            <p>The time since generation of the new configuration is longer than the grace period, so all received reports will be mark as unexpected.\n-               Please check that the node is able to get its new policies by running 'rudder agent update' on the node.</p>\n+            <p>This node is sending reports from an out-of-date configuration policy ({expectedConfigInfo.configId.value}, run started at {lastRunDateTime.toString(dateFormat)}).\n+               Please check that the node is able to update it's policy by running 'rudder agent update' on the node.</p>\n+            <p>{currentConfigId(expectedConfigInfo)}</p>\n           )\n \n         case UnexpectedNoVersion(lastRunDateTime, Some(lastRunConfigInfo), lastRunExpiration, expectedConfigInfo, expectedExpiration) =>\n           (\n-            <p>{currentConfigId(expectedConfigInfo)} but we received a run, started at {lastRunDateTime.toString(dateFormat)}, without any configuration ID.</p>\n-            <p>The time since generation of the new configuration is longer than the grace period, so all received reports will be marked as unexpected.\n-               Please check that the node is able to get its new policies.</p>\n+            <p>This node is sending reports without a configuration ID (run started on the node at {lastRunDateTime.toString(dateFormat)}), although one is required.</p>\n+            <p>All reports below will be marked as unexpected. Please run \"rudder agent update -f\" on the node to force a policy update.</p>","path":"rudder-web/src/main/scala/com/normation/rudder/web/services/ReportDisplayer.scala","position":82,"original_position":82,"commit_id":"31ee8fe965c2d0f5dbb2ef1653a50b94a9036c52","original_commit_id":"31ee8fe965c2d0f5dbb2ef1653a50b94a9036c52","user":{"login":"fanf","id":44649,"avatar_url":"https://avatars.githubusercontent.com/u/44649?v=3","gravatar_id":"","url":"https://api.github.com/users/fanf","html_url":"https://github.com/fanf","followers_url":"https://api.github.com/users/fanf/followers","following_url":"https://api.github.com/users/fanf/following{/other_user}","gists_url":"https://api.github.com/users/fanf/gists{/gist_id}","starred_url":"https://api.github.com/users/fanf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fanf/subscriptions","organizations_url":"https://api.github.com/users/fanf/orgs","repos_url":"https://api.github.com/users/fanf/repos","events_url":"https://api.github.com/users/fanf/events{/privacy}","received_events_url":"https://api.github.com/users/fanf/received_events","type":"User","site_admin":false},"body":"In that case, we said that we won't display at all unexpected message, but just the expected configuration elements without the compliance row. So the \"All reports below will be marked as unexpected. \" must be modified","created_at":"2016-07-07T13:43:09Z","updated_at":"2016-07-07T13:43:09Z","html_url":"https://github.com/fanf/rudder/pull/3#discussion_r69907973","pull_request_url":"https://api.github.com/repos/fanf/rudder/pulls/3","_links":{"self":{"href":"https://api.github.com/repos/fanf/rudder/pulls/comments/69907973"},"html":{"href":"https://github.com/fanf/rudder/pull/3#discussion_r69907973"},"pull_request":{"href":"https://api.github.com/repos/fanf/rudder/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/fanf/rudder/pulls/3","id":76395836,"html_url":"https://github.com/fanf/rudder/pull/3","diff_url":"https://github.com/fanf/rudder/pull/3.diff","patch_url":"https://github.com/fanf/rudder/pull/3.patch","issue_url":"https://api.github.com/repos/fanf/rudder/issues/3","number":3,"state":"open","locked":false,"title":"Adapt message text for config ID info","user":{"login":"jooooooon","id":93237,"avatar_url":"https://avatars.githubusercontent.com/u/93237?v=3","gravatar_id":"","url":"https://api.github.com/users/jooooooon","html_url":"https://github.com/jooooooon","followers_url":"https://api.github.com/users/jooooooon/followers","following_url":"https://api.github.com/users/jooooooon/following{/other_user}","gists_url":"https://api.github.com/users/jooooooon/gists{/gist_id}","starred_url":"https://api.github.com/users/jooooooon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jooooooon/subscriptions","organizations_url":"https://api.github.com/users/jooooooon/orgs","repos_url":"https://api.github.com/users/jooooooon/repos","events_url":"https://api.github.com/users/jooooooon/events{/privacy}","received_events_url":"https://api.github.com/users/jooooooon/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-07-06T08:33:41Z","updated_at":"2016-07-07T13:43:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f7d220a9431734198c45b23b9e7a8e41b2adad65","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/fanf/rudder/pulls/3/commits","review_comments_url":"https://api.github.com/repos/fanf/rudder/pulls/3/comments","review_comment_url":"https://api.github.com/repos/fanf/rudder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/fanf/rudder/issues/3/comments","statuses_url":"https://api.github.com/repos/fanf/rudder/statuses/31ee8fe965c2d0f5dbb2ef1653a50b94a9036c52","head":{"label":"jooooooon:bug_8409/when_a_node_send_reports_with_an_unknow_configid_no_expected_reports_are_showned_texts","ref":"bug_8409/when_a_node_send_reports_with_an_unknow_configid_no_expected_reports_are_showned_texts","sha":"31ee8fe965c2d0f5dbb2ef1653a50b94a9036c52","user":{"login":"jooooooon","id":93237,"avatar_url":"https://avatars.githubusercontent.com/u/93237?v=3","gravatar_id":"","url":"https://api.github.com/users/jooooooon","html_url":"https://github.com/jooooooon","followers_url":"https://api.github.com/users/jooooooon/followers","following_url":"https://api.github.com/users/jooooooon/following{/other_user}","gists_url":"https://api.github.com/users/jooooooon/gists{/gist_id}","starred_url":"https://api.github.com/users/jooooooon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jooooooon/subscriptions","organizations_url":"https://api.github.com/users/jooooooon/orgs","repos_url":"https://api.github.com/users/jooooooon/repos","events_url":"https://api.github.com/users/jooooooon/events{/privacy}","received_events_url":"https://api.github.com/users/jooooooon/received_events","type":"User","site_admin":false},"repo":{"id":11203745,"name":"rudder","full_name":"jooooooon/rudder","owner":{"login":"jooooooon","id":93237,"avatar_url":"https://avatars.githubusercontent.com/u/93237?v=3","gravatar_id":"","url":"https://api.github.com/users/jooooooon","html_url":"https://github.com/jooooooon","followers_url":"https://api.github.com/users/jooooooon/followers","following_url":"https://api.github.com/users/jooooooon/following{/other_user}","gists_url":"https://api.github.com/users/jooooooon/gists{/gist_id}","starred_url":"https://api.github.com/users/jooooooon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jooooooon/subscriptions","organizations_url":"https://api.github.com/users/jooooooon/orgs","repos_url":"https://api.github.com/users/jooooooon/repos","events_url":"https://api.github.com/users/jooooooon/events{/privacy}","received_events_url":"https://api.github.com/users/jooooooon/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jooooooon/rudder","description":"","fork":true,"url":"https://api.github.com/repos/jooooooon/rudder","forks_url":"https://api.github.com/repos/jooooooon/rudder/forks","keys_url":"https://api.github.com/repos/jooooooon/rudder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jooooooon/rudder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jooooooon/rudder/teams","hooks_url":"https://api.github.com/repos/jooooooon/rudder/hooks","issue_events_url":"https://api.github.com/repos/jooooooon/rudder/issues/events{/number}","events_url":"https://api.github.com/repos/jooooooon/rudder/events","assignees_url":"https://api.github.com/repos/jooooooon/rudder/assignees{/user}","branches_url":"https://api.github.com/repos/jooooooon/rudder/branches{/branch}","tags_url":"https://api.github.com/repos/jooooooon/rudder/tags","blobs_url":"https://api.github.com/repos/jooooooon/rudder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jooooooon/rudder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jooooooon/rudder/git/refs{/sha}","trees_url":"https://api.github.com/repos/jooooooon/rudder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jooooooon/rudder/statuses/{sha}","languages_url":"https://api.github.com/repos/jooooooon/rudder/languages","stargazers_url":"https://api.github.com/repos/jooooooon/rudder/stargazers","contributors_url":"https://api.github.com/repos/jooooooon/rudder/contributors","subscribers_url":"https://api.github.com/repos/jooooooon/rudder/subscribers","subscription_url":"https://api.github.com/repos/jooooooon/rudder/subscription","commits_url":"https://api.github.com/repos/jooooooon/rudder/commits{/sha}","git_commits_url":"https://api.github.com/repos/jooooooon/rudder/git/commits{/sha}","comments_url":"https://api.github.com/repos/jooooooon/rudder/comments{/number}","issue_comment_url":"https://api.github.com/repos/jooooooon/rudder/issues/comments{/number}","contents_url":"https://api.github.com/repos/jooooooon/rudder/contents/{+path}","compare_url":"https://api.github.com/repos/jooooooon/rudder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jooooooon/rudder/merges","archive_url":"https://api.github.com/repos/jooooooon/rudder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jooooooon/rudder/downloads","issues_url":"https://api.github.com/repos/jooooooon/rudder/issues{/number}","pulls_url":"https://api.github.com/repos/jooooooon/rudder/pulls{/number}","milestones_url":"https://api.github.com/repos/jooooooon/rudder/milestones{/number}","notifications_url":"https://api.github.com/repos/jooooooon/rudder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jooooooon/rudder/labels{/name}","releases_url":"https://api.github.com/repos/jooooooon/rudder/releases{/id}","deployments_url":"https://api.github.com/repos/jooooooon/rudder/deployments","created_at":"2013-07-05T16:23:36Z","updated_at":"2014-03-18T14:09:14Z","pushed_at":"2016-07-06T08:32:53Z","git_url":"git://github.com/jooooooon/rudder.git","ssh_url":"git@github.com:jooooooon/rudder.git","clone_url":"https://github.com/jooooooon/rudder.git","svn_url":"https://github.com/jooooooon/rudder","homepage":"http://www.rudder-project.org/","size":17444,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"fanf:bug_8409/when_a_node_send_reports_with_an_unknow_configid_no_expected_reports_are_showned","ref":"bug_8409/when_a_node_send_reports_with_an_unknow_configid_no_expected_reports_are_showned","sha":"618f2c87e877ecb00818894a8313fe713af4e8e7","user":{"login":"fanf","id":44649,"avatar_url":"https://avatars.githubusercontent.com/u/44649?v=3","gravatar_id":"","url":"https://api.github.com/users/fanf","html_url":"https://github.com/fanf","followers_url":"https://api.github.com/users/fanf/followers","following_url":"https://api.github.com/users/fanf/following{/other_user}","gists_url":"https://api.github.com/users/fanf/gists{/gist_id}","starred_url":"https://api.github.com/users/fanf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fanf/subscriptions","organizations_url":"https://api.github.com/users/fanf/orgs","repos_url":"https://api.github.com/users/fanf/repos","events_url":"https://api.github.com/users/fanf/events{/privacy}","received_events_url":"https://api.github.com/users/fanf/received_events","type":"User","site_admin":false},"repo":{"id":6705258,"name":"rudder","full_name":"fanf/rudder","owner":{"login":"fanf","id":44649,"avatar_url":"https://avatars.githubusercontent.com/u/44649?v=3","gravatar_id":"","url":"https://api.github.com/users/fanf","html_url":"https://github.com/fanf","followers_url":"https://api.github.com/users/fanf/followers","following_url":"https://api.github.com/users/fanf/following{/other_user}","gists_url":"https://api.github.com/users/fanf/gists{/gist_id}","starred_url":"https://api.github.com/users/fanf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fanf/subscriptions","organizations_url":"https://api.github.com/users/fanf/orgs","repos_url":"https://api.github.com/users/fanf/repos","events_url":"https://api.github.com/users/fanf/events{/privacy}","received_events_url":"https://api.github.com/users/fanf/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/fanf/rudder","description":"","fork":true,"url":"https://api.github.com/repos/fanf/rudder","forks_url":"https://api.github.com/repos/fanf/rudder/forks","keys_url":"https://api.github.com/repos/fanf/rudder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fanf/rudder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fanf/rudder/teams","hooks_url":"https://api.github.com/repos/fanf/rudder/hooks","issue_events_url":"https://api.github.com/repos/fanf/rudder/issues/events{/number}","events_url":"https://api.github.com/repos/fanf/rudder/events","assignees_url":"https://api.github.com/repos/fanf/rudder/assignees{/user}","branches_url":"https://api.github.com/repos/fanf/rudder/branches{/branch}","tags_url":"https://api.github.com/repos/fanf/rudder/tags","blobs_url":"https://api.github.com/repos/fanf/rudder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fanf/rudder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fanf/rudder/git/refs{/sha}","trees_url":"https://api.github.com/repos/fanf/rudder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fanf/rudder/statuses/{sha}","languages_url":"https://api.github.com/repos/fanf/rudder/languages","stargazers_url":"https://api.github.com/repos/fanf/rudder/stargazers","contributors_url":"https://api.github.com/repos/fanf/rudder/contributors","subscribers_url":"https://api.github.com/repos/fanf/rudder/subscribers","subscription_url":"https://api.github.com/repos/fanf/rudder/subscription","commits_url":"https://api.github.com/repos/fanf/rudder/commits{/sha}","git_commits_url":"https://api.github.com/repos/fanf/rudder/git/commits{/sha}","comments_url":"https://api.github.com/repos/fanf/rudder/comments{/number}","issue_comment_url":"https://api.github.com/repos/fanf/rudder/issues/comments{/number}","contents_url":"https://api.github.com/repos/fanf/rudder/contents/{+path}","compare_url":"https://api.github.com/repos/fanf/rudder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fanf/rudder/merges","archive_url":"https://api.github.com/repos/fanf/rudder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fanf/rudder/downloads","issues_url":"https://api.github.com/repos/fanf/rudder/issues{/number}","pulls_url":"https://api.github.com/repos/fanf/rudder/pulls{/number}","milestones_url":"https://api.github.com/repos/fanf/rudder/milestones{/number}","notifications_url":"https://api.github.com/repos/fanf/rudder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fanf/rudder/labels{/name}","releases_url":"https://api.github.com/repos/fanf/rudder/releases{/id}","deployments_url":"https://api.github.com/repos/fanf/rudder/deployments","created_at":"2012-11-15T13:39:53Z","updated_at":"2014-06-06T15:06:41Z","pushed_at":"2016-07-06T14:36:57Z","git_url":"git://github.com/fanf/rudder.git","ssh_url":"git@github.com:fanf/rudder.git","clone_url":"https://github.com/fanf/rudder.git","svn_url":"https://github.com/fanf/rudder","homepage":"http://www.rudder-project.org/","size":19366,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/fanf/rudder/pulls/3"},"html":{"href":"https://github.com/fanf/rudder/pull/3"},"issue":{"href":"https://api.github.com/repos/fanf/rudder/issues/3"},"comments":{"href":"https://api.github.com/repos/fanf/rudder/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/fanf/rudder/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/fanf/rudder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/fanf/rudder/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/fanf/rudder/statuses/31ee8fe965c2d0f5dbb2ef1653a50b94a9036c52"}}}}
{"actor":{"display_login":"fanf"}}