Project

General

Profile

Actions

User story #10551

open

Make policy generation be node by node

Added by François ARMAND about 7 years ago. Updated over 4 years ago.

Status:
New
Priority:
N/A
Assignee:
-
Category:
Web - Config management
UX impact:
Suggestion strength:
Want - This would make my life a lot easier but I can manage without
User visibility:
Getting started - demo | first install | level 1 Techniques
Effort required:
Large
Name check:
Fix check:
Regression:

Description

We want to make the policy generation node by node, so that:

  • a faulty node does not block the policy generation for other nodes,
  • in case of very long generation (>30 min), we don't have to wait the whole time to have node starting to get new policy generation,
  • errors are reported on a node by node basis
  • we can have a meaningfull progress bar for the generation ("7 nodes out of 25"...)

This, of course, lead a number of questions, for example:

  • how do we manage dependencies (typically between a node and its policy server, if hostname change)? What happen if only one the the two updates breaks?
  • how do we make errors understandable and discoverable? Imagine if 7000 nodes are in error.

(and certainly a number of others).

Moreover, the parallelism of the policy generation can be more fine-grained controlled, along with the JS timeout, dynamic group computation at start of generation, and change computation with API:

# for max parallelism, either use '1x' to mean "1 time the number of CPU / 2" or '3' to mean '3 threads'
curl -k -H "X-API-Token: xxx"  -X POST 'https://.../rudder/api/latest/settings/rudder_generation_max_parallelism' -d "value=1x" 
# value is in seconds
curl -k -H "X-API-Token: xxx"  -X POST 'https://.../rudder/api/latest/settings/rudder_generation_js_timeout' -d "value=10" 
# use 'false' or 'true' 
curl -k -H "X-API-Token: xxx"  -X POST 'https://.../rudder/api/latest/settings/rudder_generation_compute_dyngroups' -d "value=false" 
curl -k -H "X-API-Token: xxx"  -X POST 'https://.../rudder/api/latest/settings/rudder_compute_changes' -d "value=false" 

Related issues 1 (0 open1 closed)

Related to Rudder - Bug #14465: Generation fails with "Task FutureTask rejected from ThreadPoolExecutor" due to timeout in JS computationReleasedFrançois ARMANDActions
Actions #1

Updated by Benoît PECCATTE about 6 years ago

  • Target version set to Ideas (not version specific)
Actions #2

Updated by François ARMAND almost 5 years ago

  • Target version changed from Ideas (not version specific) to 5.0.12
Actions #3

Updated by François ARMAND almost 5 years ago

  • Status changed from New to In progress
  • Assignee set to François ARMAND
Actions #4

Updated by François ARMAND almost 5 years ago

  • Status changed from In progress to Pending technical review
  • Assignee changed from François ARMAND to Nicolas CHARLES
  • Pull Request set to https://github.com/Normation/rudder/pull/2233
Actions #5

Updated by Nicolas CHARLES almost 5 years ago

One important point: once a node is generated, its policies are available, and its expected reports are also available (and considered as expected)
So if we generate the policy of a new node, and the policy generation is slow (like 15 minutes), and its policy server has its policy generated last, for 15 minutes the new nodes wont have its policy served to it, and it will be in "No Answer" for 15 minutes

Actions #6

Updated by François ARMAND almost 5 years ago

  • Description updated (diff)
Actions #7

Updated by François ARMAND almost 5 years ago

  • Related to Bug #14465: Generation fails with "Task FutureTask rejected from ThreadPoolExecutor" due to timeout in JS computation added
Actions #8

Updated by François ARMAND almost 5 years ago

  • Description updated (diff)
Actions #9

Updated by François ARMAND almost 5 years ago

  • Description updated (diff)
Actions #10

Updated by Vincent MEMBRÉ almost 5 years ago

  • Target version changed from 5.0.12 to 5.0.13
Actions #12

Updated by François ARMAND over 4 years ago

  • Status changed from Pending technical review to New
  • Assignee deleted (Nicolas CHARLES)
  • Target version changed from 5.0.13 to Ideas (not version specific)

We won't do that in 5.0 nor in 5.1.

Actions

Also available in: Atom PDF