As a developer who worked on Cisco's operating systems (IOS, IOS-XE, IOS-XR, NXOS), routing protocols, kernel programming, virtual memory, device drivers and SDN, I needed a lot of time to understand how cloud computing can be done using Python. When I read that OpenStack is a cloud “operating system”, I was not able to comprehend why Wikipediasays that OpenStack is written in Python. On the right is a screenshot from Wikipedia. So, I initially thought OpenStack does not include Linux.
I have been working on OpenStack since 2013 (Grizzly release), and after more than two years, I realize that OpenStack does include “some” Linux (I will elaborate the size of “some” later in this blog!).
To understand the role of Linux in OpenStack, I will continue this blog with a few questions and pictures. The questions and pictures are around Python and Linux. The readers of this blog can find their own answers!
Which figure below is the right way to visualize OpenStack's building blocks ? Is Figure 1 that has a big Python block correct ? Or, is Figure 2 with a big Linux block correct ? Or, should both Python and Linux be equal-sized blocks ?
Who is cute ? Penguin (Linux's logo) or Python ?
According to the theory of evolution, even though Penguins (birds) evolved from Pythons (reptiles), we all know that Linux did not evolve from Python. But, did Python evolve from Linux ?
Who is your hero in the tech industry ? Linus Torvalds (creator of Linux) or Guido van Rossum (creator of Python) ?
As I think about these questions, when someone says "OpenStack minus Python", below are the concepts in OpenStack that immediately come to my mind. All of these concepts can be understood / implemented in Linux and I've listed them for OpenStack's most popular and contributed projects - Neutron, Nova, Glance, Horizon, Keystone and Cinder.
"Neutron minus Python" includes many networking concepts like Linux namespaces, layer-2 switching, VLANs (access, trunk), VXLAN, GRE, layer-3 routing, sockets, bridges, TCP, UDP, dual stack (both IPv4 and IPv6), DHCP, DNS, default routes, broadcast, multicast (IGMP, PIM), unicast, OSI model and a lot of other cool things.
"Nova minus Python" includes many virtualization concepts like hypervisors, bare-metal provisioning, PXE booting, IPMI, libvirt, qemu, KVM, virt-manager, virsh, resource isolation, nested virtualization, cgroups, vNICS, VM snapshots, VM live migration, cloud-init, paravirtualization and a lot of other cool things.
"Glance minus Python" includes many imaging concepts like disk formats (ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso), container formats (ami, ari, aki, bare, and ovf), virtual appliance (ova), image registry, virtual hard disk (VHD) and a lot of other cool things.
"Keystone minus Python" includes many authentication concepts like AAA, Single sign-on (SSO), Federated identity management (FIM), OpenID, cryptography, encryption algorithms (RSA, DSA, SHA, MD5, Diffie-Hellman, PGP), key exchange, key rotation, authentication token and a lot of other cool things.
"Cinder minus Python" includes many storage concepts like Fibre Channel, Fibre Channel over Ethernet (FCoE), Fibre Channel over IP (FCIP), Small Computer System Interface (SCSI), iSCSI (Internet SCSI), Storage Area Networks (SAN), SAN booting, RAID, Logical Unit Number (LUN), data replication and a lot of other cool things.
So, I think Python is the front-end of OpenStack and Linux is the backend that implements a lot of cool things. Along with Python, I think an OpenStack user / developer must try to understand, implement, scale and debug the concepts listed above as well in order to deploy the best clouds. The OpenStack community must also continue to build expertise around these concepts.
For example, it looks like Red Hat is one company that understands these concepts, develops a good Linux distribution as a trusted backend for OpenStack, and makes money from a lot of cloud deployments. Red Hat is the backend Linux distribution for CloudStack as well and makes money from CloudStack RHEL RPMs used by Java lovers too! I really think that cloud providers must try to capitalize and profit from "OpenStack minus Python".
Do let me know your comments and also the answers for the questions in this blog!
Hi, We are trying to get a Nexus port (which is a span destination for Rx) to be up and transmit even if Rx is not connected in it. In other cisco platforms you could achieve this by using the no keepalive command but seems to be taken out in th...
Hello all,Back in August Cisco had given notice that the 5.2 version had been added to the list of long-lived releases, and the 3.2 branch had been removed from that list.https://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/recommended-re...
Morning All, I hoping someone will be able to help with an issue im having with an EEM Applet not triggering, Nexus 5k version 7.3(5)N1(1).The script will simply reactivate an interface when in error-disabled state. event manager applet Error-Di...
Hi Everyone, Below is an error message that i detected on the ACI fabric and was not very descriptive to investigate on which EPG's are in the freeze state.I had a look on the internet and could not find much information, besides a 'show command' to ...