def save
requires :datacenter_id, :server_id, :nic_id, :protocol
properties = {}
properties[:name] = name if name
properties[:protocol] = protocol if protocol
properties[:sourceMac] = source_mac if source_mac
properties[:sourceIp] = source_ip if source_ip
properties[:targetIp] = target_ip if target_ip
properties[:portRangeStart] = port_range_start if port_range_start
properties[:portRangeEnd] = port_range_end if port_range_end
properties[:icmpType] = icmp_type if icmp_type
properties[:icmpCode] = icmp_code if icmp_code
data = service.create_firewall_rule(datacenter_id, server_id, nic_id, properties)
merge_attributes(flatten(data.body))
end