Class: Nucleon::Action::Node::Group

Inherits:
Object
  • Object
show all
Defined in:
lib/nucleon/action/node/group.rb

Direct Known Subclasses

Groups

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.describe(action = :group, weight = 670) ⇒ Object


Info



10
11
12
# File 'lib/nucleon/action/node/group.rb', line 10

def self.describe(action = :group, weight = 670)
  describe_base(:node, action, weight, nil, nil, :node_group)
end

Instance Method Details

#argumentsObject




34
35
36
# File 'lib/nucleon/action/node/group.rb', line 34

def arguments
  [ :name ]
end

#configure(aggregate = false) ⇒ Object


Settings



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/nucleon/action/node/group.rb', line 17

def configure(aggregate = false)
  super() do
    codes :group_save_failed
    
    unless aggregate
      register_str :name, nil
      
      register_bool :add      
      register_bool :delete
    end
    
    register_translator :format, :json
  end
end

#delete_node_group(node, name, remote = nil) ⇒ Object




82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/nucleon/action/node/group.rb', line 82

def delete_node_group(node, name, remote = nil)
  remote_text = remote ? "#{remote}" : "LOCAL ONLY"
  
  node.remove_groups(name)
          
  if node.save({ :remote => remote, :message => "Deleting group #{name} from #{node.plugin_provider} #{node.plugin_name}" })
    success("Group #{name} deleted (#{remote_text})", { :i18n => false })
  else
    error("Group #{name} deletion could not be saved", { :i18n => false })
    myself.status = code.group_save_failed  
  end  
end

#executeObject


Operations



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/nucleon/action/node/group.rb', line 41

def execute
  super do |node|
    ensure_node(node) do
      if ! settings[:name] || settings[:name].empty?
        render_node_groups(node)
      else
        if settings.delete(:delete, false)
          delete_node_group(node, settings[:name], sanitize_remote(network, settings[:net_remote]))                
        elsif settings.delete(:add, false)
          set_node_group(node, settings[:name], sanitize_remote(network, settings[:net_remote]))
        else
          render_node_group(node, settings[:name])
        end
      end
    end
  end
end

#render_node_group(node, name) ⇒ Object




70
71
72
73
74
75
76
77
78
# File 'lib/nucleon/action/node/group.rb', line 70

def render_node_group(node, name)
  if node.groups.include?(name.to_s)
    myself.result = true
    success("Group #{name} found", { :i18n => false })
  else
    myself.result = false
    warn("Group #{name} not found", { :i18n => false })
  end
end

#render_node_groups(node) ⇒ Object


Sub operations



62
63
64
65
66
# File 'lib/nucleon/action/node/group.rb', line 62

def render_node_groups(node)
  format        = settings[:format]
  myself.result = node.groups        
  render result, :format => format  
end

#render_providerObject


Output



114
115
116
# File 'lib/nucleon/action/node/group.rb', line 114

def render_provider
  :node_group
end

#set_node_group(node, name, remote = nil) ⇒ Object




97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/nucleon/action/node/group.rb', line 97

def set_node_group(node, name, remote = nil)
  remote_text  = remote ? "#{remote}" : "LOCAL ONLY"
          
  myself.result = name           
  node.add_groups(name)    
          
  if node.save({ :remote => remote, :message => "Saving group #{name} to #{node.plugin_provider} #{node.plugin_name}" })
    success("Group #{name} saved (#{remote_text})", { :i18n => false })
  else
    error("New group #{name} could not be saved", { :i18n => false })
    myself.status = code.group_save_failed  
  end  
end