The introduction of the Internet of Things (IoT) and massive machine-type communications has implied an increase in network size and complexity. In particular, there is already a huge number of IoT devices in the market in various sectors, such as smart agriculture, smart city, smart home, smart transportation, etc. The IoT interconnectivity technologies are also increasing. Therefore, these are increasingly overwhelming the efforts of network administrators as they try to design, reconfigure and manage such networks. Relying on humans to manage such complex and dynamic networks is becoming unsustainable. Network automation promises to reduce the cost of administration and maintenance of network infrastructure, by offering networks the capability to manage themselves. Network automation is the ability of the network to manage itself. Various standardization organizations are taking the initiative in introducing network automation such as European Telecommunication Standardization Institute (ETSI). ETSI is leading the standardization activities for network automation. It has provided different versions of reference architecture called Generic Autonomic Network Architecture (GANA), which describes a four-level abstraction for network-management decision elements (DEs), protocol-level, function-level, node-level, and network-level. In this paper, we review and survey the existing works before and after the introduction of software-defined networking (SDN) and network-function-virtualization (NFV). We relate the main trending paradigms being followed such as SDN, NFV, machine-learning (ML), microservices, multi-agent system (MAS), containerization, and cloudification, as a pivotal enabler of full network automation. We also discuss the autonomic architectures proposed in the literature. Finally, we presented possible future research directions and challenges that need to be tackled to progress in achieving full network automation.