Total Complexity | 0 |
Total Lines | 29 |
Duplicated Lines | 0 % |
Changes | 2 | ||
Bugs | 0 | Features | 0 |
1 | # frozen_string_literal: true |
||
13 | class Group |
||
14 | # Planner for group privileges |
||
15 | class Privilege |
||
16 | # @param [AMA::Chef::User::Model::Group] group |
||
17 | # @param [Hash{Symbol, AMA::Chef::User::Model::Privilege}] current_state |
||
18 | # @param [Hash{Symbol, AMA::Chef::User::Model::Privilege}] desired_state |
||
19 | def plan(group, current_state, desired_state) |
||
20 | actions = (current_state.keys | desired_state.keys).map do |type| |
||
21 | process(group, current_state[type], desired_state[type]) |
||
22 | end |
||
23 | actions.push(ns::Purge.new(group)) if desired_state.empty? |
||
24 | actions |
||
25 | end |
||
26 | |||
27 | private |
||
28 | |||
29 | # @param [AMA::Chef::User::Model::Group] group |
||
30 | # @param [AMA::Chef::User::Model::Privilege] current_state |
||
31 | # @param [AMA::Chef::User::Model::Privilege] desired_state |
||
32 | def process(group, current_state, desired_state) |
||
33 | return ns::Revoke.new(group, current_state) if desired_state.nil? |
||
34 | ns::Grant.new(group, desired_state) |
||
35 | end |
||
36 | |||
37 | def ns |
||
38 | ::AMA::Chef::User::Action::Group::Privilege |
||
39 | end |
||
40 | end |
||
41 | end |
||
42 | end |
||
46 |