class Kakine::Builder

Public Class Methods

already_setup_security_group(new_sg, current_sgs) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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
security_groups() click to toggle source
# File lib/kakine/builder.rb, line 76
def security_groups
  sgs = Kakine::Resource.get(:openstack).security_groups_hash
  delete_id_column(sgs).to_yaml
end