Class: Kakine::Builder
- Inherits:
-
Object
- Object
- Kakine::Builder
- Defined in:
- lib/kakine/builder.rb
Class Method Summary collapse
- .already_setup_security_group(new_sg, current_sgs) ⇒ Object
- .clean_up_security_group(new_sgs, current_sgs) ⇒ Object
- .clean_up_security_rule(new_sg, current_sg) ⇒ Object
- .convergence_security_group(new_sg, current_sg) ⇒ Object
- .create_security_group(sg) ⇒ Object
- .create_security_rule(tenant_name, sg_name, rule) ⇒ Object
- .delete_default_security_rule(tenant_name, sg_name) ⇒ Object
- .delete_id_column(sgs) ⇒ Object
- .delete_security_group(sg) ⇒ Object
- .delete_security_rule(tenant_name, sg_name, rule) ⇒ Object
- .first_create_rule(new_sg, current_sg) ⇒ Object
- .first_create_security_group(new_sg) ⇒ Object
- .security_groups ⇒ Object
Class Method Details
.already_setup_security_group(new_sg, current_sgs) ⇒ Object
38 39 40 |
# File 'lib/kakine/builder.rb', line 38 def already_setup_security_group(new_sg, current_sgs) current_sgs.find { |current_sg| current_sg.name == new_sg.name } end |
.clean_up_security_group(new_sgs, current_sgs) ⇒ Object
22 23 24 25 26 |
# File 'lib/kakine/builder.rb', line 22 def clean_up_security_group(new_sgs, current_sgs) current_sgs.map do |current_sg| delete_security_group(current_sg) if new_sgs.none? { |new_sg| current_sg.name == new_sg.name } end end |
.clean_up_security_rule(new_sg, current_sg) ⇒ Object
70 71 72 73 74 |
# File 'lib/kakine/builder.rb', line 70 def clean_up_security_rule(new_sg, current_sg) current_sg.rules.map do |rule| delete_security_rule(new_sg.tenant_name, new_sg.name, rule) unless new_sg.find_by_rule(rule) end end |
.convergence_security_group(new_sg, current_sg) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/kakine/builder.rb', line 28 def convergence_security_group(new_sg, current_sg) if new_sg.name != 'default' && new_sg.description != current_sg.description delete_security_group(current_sg) first_create_security_group(new_sg) else clean_up_security_rule(new_sg, current_sg) first_create_rule(new_sg, current_sg) end end |
.create_security_group(sg) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/kakine/builder.rb', line 4 def create_security_group(sg) attributes = { name: sg.name, description: sg.description, tenant_id: sg.tenant_id } security_group_id = Kakine::Adapter.instance.create_security_group(attributes) delete_default_security_rule(sg.tenant_name, sg.name) security_group_id end |
.create_security_rule(tenant_name, sg_name, rule) ⇒ Object
42 43 44 45 46 |
# File 'lib/kakine/builder.rb', line 42 def create_security_rule(tenant_name, sg_name, rule) sg = Kakine::Resource.get(:openstack).security_group(tenant_name, sg_name) security_group_id = Kakine::Option.dryrun? && sg.nil? ? Kakine::Adapter.instance.id(sg_name) : sg.id Kakine::Adapter.instance.create_rule(security_group_id, rule.direction, rule) end |
.delete_default_security_rule(tenant_name, sg_name) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/kakine/builder.rb', line 52 def delete_default_security_rule(tenant_name, sg_name) target_sg = Kakine::Resource.get(:openstack).load_security_group.find do |sg| sg.name == sg_name end target_sg.rules.map do |rule| delete_security_rule(tenant_name, sg_name, rule) end if target_sg end |
.delete_id_column(sgs) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/kakine/builder.rb', line 81 def delete_id_column(sgs) case sgs when Array sgs.map { |sg| delete_id_column(sg) } when Hash sgs.inject({}) do |hash, (k, v)| hash[k] = delete_id_column(v) if k != "id" hash end else sgs end end |
.delete_security_group(sg) ⇒ Object
11 12 13 |
# File 'lib/kakine/builder.rb', line 11 def delete_security_group(sg) Kakine::Adapter.instance.delete_security_group(sg.id) end |
.delete_security_rule(tenant_name, sg_name, rule) ⇒ Object
48 49 50 |
# File 'lib/kakine/builder.rb', line 48 def delete_security_rule(tenant_name, sg_name, rule) Kakine::Adapter.instance.delete_rule(rule.id) end |
.first_create_rule(new_sg, current_sg) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/kakine/builder.rb', line 62 def first_create_rule(new_sg, current_sg) new_sg.rules.map do |rule| unless current_sg.find_by_rule(rule) create_security_rule(new_sg.tenant_name, new_sg.name, rule) end end end |
.first_create_security_group(new_sg) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/kakine/builder.rb', line 15 def first_create_security_group(new_sg) create_security_group(new_sg) new_sg.rules.map do |rule| create_security_rule(new_sg.tenant_name, new_sg.name, rule) end if new_sg.has_rules? end |