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, environment, component, rules_directory) ⇒ VcloudConfigureRequest

Returns a new instance of VcloudConfigureRequest.



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 5

def initialize vcloud_settings, auth_header, environment, component, rules_directory
  @auth_header = auth_header
  @config_url =  vcloud_settings.edge_gateway_config_url
  @environment = environment
  @component = component
  @response = nil
  @interfaces = YAML::load_file("#{rules_directory}/#{@environment}/interfaces.yaml")['interfaces']

  require "#{rules_directory}/common_#{component}.rb"
  require "#{rules_directory}/#{@environment}/#{component}"
end

Instance Method Details

#componentsObject



17
18
19
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 17

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

#response_bodyObject



48
49
50
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 48

def response_body
  @response.body
end

#submitObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 21

def submit
  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 = Kernel.const_get("Component").const_get(components[@component]).generate_xml(@interfaces).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
  @response = response
end

#success?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/vcloud_network_configurator/vcloud_configure_request.rb', line 44

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