Class: Dcmgr::Cli::Group

Inherits:
Base
  • Object
show all
Defined in:
lib/dcmgr/cli/group.rb

Constant Summary collapse

M =
Dcmgr::Models

Instance Method Summary collapse

Instance Method Details

#addObject



13
14
15
16
17
# File 'lib/dcmgr/cli/group.rb', line 13

def add
  UnknownUUIDError.raise(options[:account_id]) if M::Account[options[:account_id]].nil?
  
  puts super(M::NetfilterGroup,options)
end

#addrule(g_uuid) ⇒ Object



82
83
84
85
86
87
88
89
# File 'lib/dcmgr/cli/group.rb', line 82

def addrule(g_uuid)
  UnknownUUIDError.raise(g_uuid) if M::NetfilterGroup[g_uuid].nil?
  
  #TODO: check rule syntax
  new_rule = M::NetfilterRule.new(:permission => options[:rule])
  new_rule.netfilter_group = M::NetfilterGroup[g_uuid]
  new_rule.save
end

#apply(uuid) ⇒ Object



64
65
66
67
68
69
# File 'lib/dcmgr/cli/group.rb', line 64

def apply(uuid)
  group = M::NetfilterGroup[uuid] || UnknownUUIDError.raise(uuid)
  instance = M::Instance[options[:instance]] || UnknownUUIDError.raise(options[:instance])
  Error.raise("Group #{uuid} is already applied to instance #{options[:instance]}.",100) if group.instances.member?(instance)
  group.add_instance(instance)
end

#del(uuid) ⇒ Object



20
21
22
# File 'lib/dcmgr/cli/group.rb', line 20

def del(uuid)
  super(M::NetfilterGroup,uuid)
end

#delrule(g_uuid) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/dcmgr/cli/group.rb', line 93

def delrule(g_uuid)
  UnknownUUIDError.raise(g_uuid) if M::NetfilterGroup[g_uuid].nil?
  rule = M::NetfilterRule.find(:netfilter_group_id => M::NetfilterGroup[g_uuid].id,:permission => options[:rule])
  Error.raise("Group '#{g_uuid}' does not contain rule '#{options[:rule]}'.",100) if rule.nil?
  
  rule.destroy
end

#modify(uuid) ⇒ Object



57
58
59
60
# File 'lib/dcmgr/cli/group.rb', line 57

def modify(uuid)
  UnknownUUIDError.raise(options[:account_id]) if options[:account_id] && M::Account[options[:account_id]].nil?
  super(M::NetfilterGroup,uuid,options)
end

#remove(uuid) ⇒ Object



73
74
75
76
77
78
# File 'lib/dcmgr/cli/group.rb', line 73

def remove(uuid)
  group = M::NetfilterGroup[uuid] || UnknownUUIDError.raise(uuid)
  instance = M::Instance[options[:instance]] || UnknownUUIDError.raise(options[:instance])
  Error.raise("Group #{uuid} is not applied to instance #{options[:instance]}.",100) unless group.instances.member?(instance)
  group.remove_instance(instance)
end

#show(uuid = nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/dcmgr/cli/group.rb', line 25

def show(uuid=nil)
  if uuid
    group = M::NetfilterGroup[uuid] || UnknownUUIDError.raise(uuid)
    puts ERB.new(<<__END, nil, '-').result(binding)
Group UUID:
  <%= group.canonical_uuid %>
Account id:
  <%= group.account_id %>
<%- if group.description -%>
Description:
  <%= group.description %>
<%- end -%>
<%- unless group.netfilter_rules.empty? -%>
Rules:
<%- group.netfilter_rules.each { |rule| -%>
  <%= rule.permission %>
<%- } -%>
<%- end -%>
__END
  else
    puts ERB.new(<<__END, nil, '-').result(binding)
<%- M::NetfilterGroup.all { |row| -%>
<%= row.canonical_uuid %>\t<%= row.account_id %>\t<%= row.name %>
<%- } -%>
__END
  end
end