Class: VcloudConfigureRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/vcloud_network_configurator/vcloud_configure_request.rb

Instance Method Summary collapse

Constructor Details

#initialize(vcloud_settings, auth_header, component, rules_files, interfaces_files) ⇒ VcloudConfigureRequest

Returns a new instance of VcloudConfigureRequest.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 5

def initialize vcloud_settings, auth_header, component, rules_files, interfaces_files
  @auth_header = auth_header
  @config_url =  vcloud_settings.edge_gateway_config_url
  @component = component
  @response = nil

  @interfaces = {}
  interfaces_files.each do |ifile|
    @interfaces.merge!(YAML::load_file(ifile)['interfaces']) if ifile and File.file?(File.expand_path(ifile))
  end if interfaces_files

  rules_files.each do |rfile|
    next if rfile.nil?
    expanded_rfile = File.expand_path(rfile)
    require expanded_rfile if File.file?(expanded_rfile)
  end if rules_files
end

Instance Method Details

#componentsObject



23
24
25
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 23

def components
  { "firewall" => "Firewall", "nat" => "NAT", "lb" => "LoadBalancer" }
end

#response_bodyObject



58
59
60
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 58

def response_body
  @response.body
end

#submitObject



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
52
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 27

def submit
  generated_xml = Kernel.const_get("Component").const_get(components[@component]).
                    generate_xml(@interfaces)
  abort "No rules found. exiting" if generated_xml.nil?

  url = URI(@config_url)
  request = Net::HTTP::Post.new url.request_uri
  request['Accept'] = VcloudSettings.request_headers['Accept']
  request['Content-Type'] = VcloudSettings.request_headers['Content-Type']
  request['x-vcloud-authorization'] = @auth_header

  request.body = generated_xml.to_xml

  puts "Reading configuration from #{@config_file}"
  puts "Submitting request at #{@config_url}\n"

  session = Net::HTTP.new(url.host, url.port)
  session.use_ssl = true
  response = session.start do |http|
    http.request request
  end

  puts "HTTP #{response.code}"
  puts response.body
  @response = response
end

#success?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 54

def success?
  @response.code == "202"
end