Traditionally CLIs or SDK library functions are used to configure network devices. CLIs and scripts are almost always device-specific; they can only be used in the same type of devices that use the same CLis from the same vendor. Moreover, those functions may not exist for all configuration commands, and where they do exist, it may be difficult to program a complex configuration. The model-driven programming provides a standard way to describe the desired configuration of the network devices. Of course, the target device itself has to support the ability to use model- driven configuration.