Adding support for Cisco NX-OS PowerOn Auto Provisioning (POAP)

Hello,

I am working on a set of patches for Foreman and Smart Proxy to add support
for Cisco PowerOn Auto Provisioning (POAP). This is a feature available on
Cisco Nexus switches running NX-OS that helps with remote installations for
new equipment. I have already opened two feature requests, #10526 and
#10527, in order to get ready to send pull requests.

For anyone not familiar with Cisco POAP, if a Nexus switch does not find a
valid configuration file stored on NVRAM at boot time, it will try to get a
DHCP lease. If the DHCP server sends two options providing the name or
address of a TFTP server and a file name, the switch will try and load this
file in order to provision itself. The file should contain a Python script
that can use some functions provided by Cisco to download new firmware
images and configuration data [2].

I based my work on the work that added Junos ZTP support for Foreman (#3906
and #3941). I have already tested my patches with Foreman 1.8 and I'm about
to rebase them for the develop branch. However, I have a question regarding
the proprietary sample Python scripts that Cisco provides at their closed
support site. Since I was not able to find a sample file with a suitable
license, I wonder if I can submit only a placeholder template for POAP
support, with a note telling the user to create his own provisioning script
based on the proprietary Cisco examples.

Is this acceptable for a initial patch? We have plans to write our own
scripts and release them under a BSD license, but this should still take a
few weeks to happen. Meanwhile, the actual code changes that enable Foreman
and Smart Proxy to handle POAP scripts and pass the correct DHCP options to
the switches are done, so I believe it could already be useful to other
users of Cisco equipment.

Best,

ยทยทยท -- Fernando Carolo

[1] http://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus6000/sw/fundamentals/7x/b_6k_Fund_Config_7x/b_6k_Fund_Config_7x_chapter_011.html
[2] http://www.cisco.com/c/en/us/td/docs/switches/datacenter/sw/6_x/nx-os/fundamentals/configuration/guide/b_Cisco_Nexus_7000_Series_NX-OS_Fundamentals_Configuration_Guide_Release_6-x/b_Cisco_Nexus_7000_Series_NX-OS_Fundamentals_Configuration_Guide_Release_6-x_chapter_01011.html