Giant blob of minor changes
[dotfiles/.git] / .config / Typora / draftsRecover / 2019-5-4 cluster 163410.md
diff --git a/.config/Typora/draftsRecover/2019-5-4 cluster 163410.md b/.config/Typora/draftsRecover/2019-5-4 cluster 163410.md
deleted file mode 100644 (file)
index d8b1ac0..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title:
-- Cluster.py
-author:
-- Oscar Rodriguez
-theme:
--AnnArbor
-colortheme:
--lily
-font:
--professionalfonts
----
-
-
-
-# imports
-
-tenemos una lista de cosas que se importan para tener nuestro `cluster.py` funcionando, esta lista de cosas que se importan son en su mayyoria partes del programa original del mininet, pero entre los mas importantes estan:
-
-+ node
-
-+ link
-
-+ net
-
-+ topo
-+ topolib
-+ util
-+ `clustercli.py`
-+ log
-+ clean
-
-# imports *no mininet*
-
-dentro de los imports tambien hay un conjunto de cosas que se importan que no son parte de mininet, estas cosas que se importan sin ser parte de mininet son en gran parte funciones del sistema y entre estas se incluyen las siguientes:
-
-+ signal (`signal` `SIGINT` `SIG_IGN`)
-+ subprocess (`Popen` `PIPE` `STDOUT`)
-
-+ os
-
-+ random (`randrange`)
-
-+ sys
-
-+ re
-
-+ itertools (`groupby`)
-
-+ operator (`attrgetter`)
-
-+ disutils.version (`StrictVersion`)
-
-# findUser()
-
-> function
-
-Esta es una funcion que intenta encontra que usuario es el que esta corriendo cluster.py a traves de un comando de tipo *whoami* y no hace mas nada que esto, esta es la primera funcion que nos encontraremos por aca.
-
-# ClusterCleanup( *object* )
-
-> class
-
-esta clase se compone de multiples metodos que sirven para limpiar el cluster. tiene muchas funciones que podrian parecer no pertenecer aca
-
-## add( cls, server, user='' )
-
-> class method
-
-esta funcion se encarga de agregar entradas a un diccionario de server:usuario
-
-## cleanup( cls )
-
-> class method
-
-esta es una funcion que se encarga de limpiar todos los servidores a traves de ssh, enviando el comando `mn -c` a todos los pares dentro del diccionario server:user
-
-# RemoteMixin( *object* )
-
->  class
-
-es una clase especial que se encarga de convertir los nodos locales en nodos remotos y en base a sus propias palabras:
-
-> se podrian convertir mas tarde los nodos en nodos que funcionen todos como remotos modificando la clase nodo en el programa original de mininet sin ningun problema, pero con esta clase `mix-in` logramos tener mas control.
-
-en esta clase hay un intenso uso del ssh y comienza con una base ssh que es
-
-```python
-sshbase = [ 'ssh', '-q',
-                '-o', 'BatchMode=yes',
-                '-o', 'ForwardAgent=yes', '-tt' ]
-```
-
-esta base le permite no imprimir datos innecesarios ni tener que introducir las credenciales cada vez.
-
-## def _ _ init _ _(self, name, server='localhost', user=None, serverIP=None,                  controlPath=False, splitInit=False, **kwargs)
-> class initializer
-
-en este inicializador de las classes se introduce el nombre de lnodo remoto, el servidor remoto, el usurio en el servidor remoto, la via de control y el split (estas tres ultimas cosas son opcionales).  
-
-el argumento restante que se llama `**kwargs` son los elementos que le pertenecen a nuestro `Node()`comun de **mininet.**
-
-## findServerIP( cls, server )
-
-> class method
-
-este es simplemente un metodo que se encarga de devolver el IP de nuestro server para este nodo.
-
-## startShell( self, *args, **kwargs )
-
-> class function
-
-esta funcion se encarga de comenzar un shell para correr comandos en el remoto.
-
-## finishInit( self )
-
-> class function
-
-este se encarga de esperar a que los split initialization se completen
-
-## rpopen( self, *cmd, **opts )
-
-> class function
-
-retorna un objeto `Popen` en un servicio que se encuentra en el *namespace* de **root**
-
-## rcmd( self, *cmd, **opts)
-
-> class function
-
-corre un comando en el servidor, es decir, corre un comando no en el nodo sino en el *namespace* de **root**
-
-## _ignoreSignal()
-
-> Static method
-
-este es un metodo que se utiliza para separar el proceso de su grupo y asi ignorar todos los signals que se hagan a ese grupo
-
-## _popen( self, cmd, sudo=True, tt=True, **params )
-
-> class function
-
-abre un proceso en un nodo remoto.
-
-tambien tenemos mas abajo el `def popen( self, *args, **kwargs)` que es solo un overrride que se encarga de ignorar el parametro tt
-
-## addIntf( self, *args, **kwargs )
-
-> class function
-
-Este es un overrride que se usa para utilizar `RemoteLink.moveIntf`
-
-# RemoteNode( RemoteMixin, Node )
-
-> class
-
-esta clase es solo un nodo en un servidor remoto, tambien es sinonimo de la clase `RemoteHost()` y muy parecida a la clase `RemoteOVSSwitch( RemoteMixin, OVSSwitch)` que es una instancia remota de un open vSwitch
-
-# RemoteOVSSwitch( RemoteMixin, OVSSwitch )
-
-> class 
-
-Esta es una instancia remota de Open vSwitch y cuenta con ciertas funciones a deferencia del `RemoteNode()`
-
-## _ _ init _ _ ( self, *args, **kwargs )
-
-> class initializer
-
-es un simple inicializador de la clase
-
-## isOldOvs( self )
-
-> class function
-
-esta funcion nos dice si la version de OVS es una version antigua, es decir, nos devuelve **true** si la version es menor a la version *1.10*
-
-## batchStartup( cls, switches, **_kwargs )
-
-> class method
-
-inicializa los switchs en batches por servidores, tiene una funcion contraparte que es `batchShutdown( cls, switches, **_kwargs )` que apaga los switches en batches por servidores
-
-# RemoteLink( Link )
-
-> class
-
-Es un link entre nodos que podrian estar en servidores diferentes. La funcion di inicializacion es muy comun puesto a que tiene casi los mismos parametros que en un `Link()` comun por lo que se omite aca
-
-## stop( self )
-
-> class function
-
-detiene el link, no tiene nada mas
-
-## makeIntfPair(elf, intfname1, intfname2, addr1=None, addr2=None, node1=None, node2=None, deleteIntfs=True)
-> class function
-
-esta funcion crea un par de interfaces
-
-## moveIntf( intf, node )
-
-> static method
-
-mueve una interfaz remota del *namespace* **root** al *nodo*
-
-## makeTunnel( self, node1, node2, intfname1, intfname2, addr1=None, addr2=None ) :red_circle:
-
-> class function
-
-Esta es la funcion que se encarga de crear el tunnel ssh entre los switches!!!!
-
-esto es de alta importancia! :warning:
-
-## status( self )
-
-> class function
-
-esta funcion devuelve el estado en que se encuentra un link
-
-# RemoteSSHLink( RemoteLink )
-
-> class :warning:
-
-esta funcion contiene los datos especificos de los links que seran ssh
-
-# RemoteGRELink( RemoteLink)
-
-> class
-
-a esta clase hay que darle especial atencion porque por alguna razon los creadores del codigo dicen que aun no es compatible, esta clase tiene metodos para: 
-
-+ inicializar
-+ detener
-+ crear pares de interfaces
-+ crear tunel
-
-# Placing
-
-> multiple classes
-
-hay un conglomerado de clases que se utilizaran para la distribucion de switches y que queremos reemplazar, por eso no se dan detalles mayores, pero esas clases son:
-
-```python
-class Placer( object )
-class RandomPlacer( object )
-class RoundRobinPlacer( object )
-class SwitchBinPlacer( object ) #factible
-class HostSwitchBinPlacer( object )#poco factible
-```
-
-# MininetCluster ( Mininet ) :green_book:
-
-> class
-
-Una version nueva de la clase mininet que esta mejorada par a poder ser clusterizable
-
-en esta ocasion no se hablaran las funciones que se encuentran aca dentro porque se deben estudiar linea por linea cuidadosamente mas adelante, ademas de que se deben leer las partes equivalentes en el mininet comun, tambien se debe intentar probar esta
\ No newline at end of file