lib/kakine/resource.rb in kakine-0.3.0 vs lib/kakine/resource.rb in kakine-0.4.0
- old
+ new
@@ -1,90 +1,13 @@
module Kakine
class Resource
class << self
- def load_security_group_by_yaml(filename, tenant_name)
- load_yaml = yaml(filename)
- return false unless Kakine::Validate.validate_file_input(load_yaml)
- load_yaml.map { |sg| Kakine::SecurityGroup.new(tenant_name, sg) }
- end
-
- def get_current(tenant_name)
- Kakine::Resource.security_groups_hash(tenant_name).map do |sg|
- Kakine::SecurityGroup.new(tenant_name, sg)
- end
- end
-
- def yaml(filename)
- YAML.load_file(filename).to_hash
- end
-
- def tenant(tenant_name)
- @tenant ||= Fog::Identity[:openstack].tenants.detect{|t| t.name == tenant_name}
- end
-
- def security_group(tenant_name, security_group_name)
- security_groups_on_tenant(tenant_name).detect{|sg| sg.name == security_group_name}
- end
-
- def security_group_rule(security_group, attributes)
- security_group.security_group_rules.detect do |sg|
-
- sg.direction == attributes.direction &&
- sg.protocol == attributes.protocol &&
- sg.port_range_max == attributes.port_range_max &&
- sg.port_range_min == attributes.port_range_min &&
- sg.ethertype == attributes.ethertype &&
- (
- (
- attributes.remote_group_id.nil? &&
- sg.remote_ip_prefix == attributes.remote_ip
- ) ||
- (
- attributes.remote_ip.nil? &&
- sg.remote_group_id == attributes.remote_group_id
- )
- )
- end
- end
-
- def security_groups_on_tenant(tenant_name)
- Fog::Network[:openstack].security_groups.select{|sg| sg.tenant_id == tenant(tenant_name).id}
- end
-
- def security_groups_hash(tenant_name)
- sg_hash = Hash.new { |h,k| h[k] = {} }
-
- security_groups_on_tenant(tenant_name).each do |sg|
- sg_hash[sg.name]["rules"] = format_security_group(sg)
- sg_hash[sg.name]["description"] = sg.description
- end
- sg_hash
- end
-
- def format_security_group(security_group)
- security_group.security_group_rules.map do |rule|
- rule_hash = {}
- rule_hash["direction"] = rule.direction
- rule_hash["protocol"] = rule.protocol
- rule_hash["ethertype"] = rule.ethertype
-
- if rule.protocol == "icmp"
- rule_hash["type"] = rule.port_range_min
- rule_hash["code"] = rule.port_range_max
- elsif rule.port_range_max == rule.port_range_min
- rule_hash["port"] = rule.port_range_max
- else
- rule_hash["port_range_min"] = rule.port_range_min
- rule_hash["port_range_max"] = rule.port_range_max
- end
-
- if rule.remote_group_id
- response = Fog::Network[:openstack].get_security_group(rule.remote_group_id)
- rule_hash["remote_group"] = response.data[:body]["security_group"]["name"]
- else
- rule_hash["remote_ip"] = rule.remote_ip_prefix
- end
- rule_hash
+ def get(type)
+ case
+ when type == :yaml
+ Kakine::Resource::Yaml
+ when type == :openstack
+ Kakine::Resource::OpenStack
end
end
end
end
end