class Chef::Knife::ProfitbricksFirewallCreate

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/profitbricks_firewall_create.rb, line 77
def run
  $stdout.sync = true

  validate_required_params(%i(datacenter_id server_id nic_id protocol) , Chef::Config[:knife])

  print "#{ui.color('Creating firewall...', :magenta)}"

  params = {
    name: Chef::Config[:knife][:name],
    protocol: Chef::Config[:knife][:protocol],
    sourceMac: Chef::Config[:knife][:sourcemac],
    sourceIp: Chef::Config[:knife][:sourceip],
    targetIp: Chef::Config[:knife][:targetip],
    portRangeStart: Chef::Config[:knife][:portrangestart],
    portRangeEnd: Chef::Config[:knife][:portrangeend],
    icmpType: Chef::Config[:knife][:icmptype],
    icmpCode: Chef::Config[:knife][:icmpcode]
  }

  connection
  firewall = ProfitBricks::Firewall.create(
    Chef::Config[:knife][:datacenter_id],
    Chef::Config[:knife][:server_id],
    Chef::Config[:knife][:nic_id],
    params.compact
  )

  dot = ui.color('.', :magenta)
  firewall.wait_for { print dot; ready? }

  puts "\n"
  puts "#{ui.color('ID', :cyan)}: #{firewall.id}"
  puts "#{ui.color('Name', :cyan)}: #{firewall.properties['name']}"
  puts "#{ui.color('Protocol', :cyan)}: #{firewall.properties['protocol']}"
  puts "#{ui.color('Source MAC', :cyan)}: #{firewall.properties['sourceMac']}"
  puts "#{ui.color('Source IP', :cyan)}: #{firewall.properties['sourceIp']}"
  puts "#{ui.color('Target IP', :cyan)}: #{firewall.properties['targetIp']}"
  puts "#{ui.color('Port Range Start', :cyan)}: #{firewall.properties['portRangeStart']}"
  puts "#{ui.color('Port Range End', :cyan)}: #{firewall.properties['portRangeEnd']}"
  puts "#{ui.color('ICMP Type', :cyan)}: #{firewall.properties['icmpType']}"
  puts "#{ui.color('ICMP Code', :cyan)}: #{firewall.properties['icmpCode']}"
  puts 'done'
end