Description
Prerequisites
- Recommended Prerequisite: Python Basics (5 days)
- Coding experience in another language serves as an adequate prerequisite
- Who Should Attend
- System Administrators
- Network Engineers
- Software Developers
- Python Enthusiasts
Course Objectives
- Client side Python Scripting to RESTful (and non-RESTful) APIs
- Design RESTful API interfaces with Flask Web Framework
- Overview of Django
- Deploy your Python web apps as Docker containers
- Open SSH sessions and pass commands to remote servers
- Move files via SFTP
- Parse and manipulate popular data structures (JSON, CSV, Excel, and YAML) as pandas dataframes
- Best practice techniques
Follow On Courses
Python for Network Automation (PNA)
Jenkins Automation Server Essentials (JASE)
Outline: APIs and API Design with Python (AADP)
Python Review
- Version Control with Git
- Lists
- Dictionaries
- Conditionals (if, elif, else)
- Loops (for and when)
- Functions
- Classes and Methods
- Using pip
Working with Data – JSON, YAML, CSV and Excel
- JSON RFC 7159
- JSON Formatting
- YAML intro
- YAML Formatting
- Python Libraries for decoding JSON, YAML and CSV
- Reading and Writing to Excel
- Dataframes and pandas
SSH Communication and SFTP
- Python and SSH
- Building an SFTP Client & Server
- Python and SFTP limitations
- Paramiko for SSH
- Netmiko and Major Network Vendors (Cisco, Juniper, Arista)
Web and RESTful APIs
- Creating an HTTP Client & Server with Python
- Introduction to REST
- RESTful API on Etcd keystore (Kubernetes distributed DB)
- Creating a Python client to interact with API endpoints
- API dev keys
- Secure password retrieval
- Tokens and APIs
- OAuth v2.0
API Design Practices
- RESTful Architecture
- Stubbing code with Swagger
- Describing Resource functionality (GET, POST, PUT, DELETE, etc.)
- Collections, resources, and URLs
- Using nouns, not verbs
- Understanding HTTP status codes
- Returning data
Building APIs with Flask
- Flask Overview
- Decorators
- Building APIs with Python and Flask
- APIs returning Jinja2 templating
- Returning a ‘cookie’
- Building Sessions
- Redirecting from URIs
- Build an API to accept a file upload
- Overview of Django
Deploying APIs
- Docker containers
- Docker build
- Constructing Docker images
- Dockerfile
- Deploying a Flask App on Docker
- Automating build processes
Database Integration
- Overview
- Connecting to Python
- Read / Write operations
- Other useful instructions
- Connecting APIs and SQLite
- Python and PostgreSQL
- Python and MongoDB
- Reading and Writing to Databases with APIs
Processes and Threads
- Threading
- Context change
- Deadlock errors
- Thread starvation
- Racing conditions and racing specifics
- Working with Locks