CONSOL '19

Arquitectura de datos del proyecto Fedora

¿Quien es este tipo?

Alberto es tu amigable vecino que colabora en el Proyecto Fedora.

 

Y ¿En qué colabora? 

  • Marketing (Miembro)
  • Fedora Join (Sponsor)
  • GSoC/Outreanchy (Mentor)
  • Mindshare committee (Miembro)
  • CommOps (Líder)
  • NeuroFedora (Spin Master)
  • Advocate program (Sponsor)

¿Como se crea una distribución moderna de Linux?

Usuario  

Contributor 

Las tripas

Y la infraestructura?

CommOps 

  • Trabajar en estrecha colaboración con el Fedora Community Action and Impact Coordinator para priorizar áreas clave.
  • Asistir a Fedora Program Manager con los preparativos de lanzamiento.
  • Apoyar la preparación y ejecución de las elecciones de Fedora.
  • Trabajar con subproyectos y equipos para mejorar los métodos y prácticas de incorporación
  • Usar métricas y datos para mejorar la comprensión de la comunidad de Fedora
  •      Apoyar el desarrollo de herramientas de métricas
  • Y más.

FedMsg

fedmsg (Federated Message Bus) antes Fedora Messaging, es una biblioteca que usa ZeroMQ (PyZMQ) para conectar servicios de publicacion de mensajes

 

 

ZeroMQ

Es una biblioteca de conectividad (networking) que permite enviar/recibir mensajes atómicos sobre multiples transportes (inprocess, inter-process, tcp, multicast)

FedMsg Protocol

  • Modelo de Subscriptor Publicación
  • Salidas en JSON
  • UTF-8 encoded message

¿Como explotarlo?

  • Linea de comandos
  • Web
  • Programación

Linea de comandos

sudo dnf install httpie

http get https://apps.fedoraproject.org/datagrepper/raw delta==172800

http get https://apps.fedoraproject.org/datagrepper/raw delta==172800 rows_per_page==1

http get https://apps.fedoraproject.org/datagrepper/raw \
   delta==172800 \
   rows_per_page==1 \
   page==2
   
http get https://apps.fedoraproject.org/datagrepper/raw \
   delta==172800 \
   category==bodhi \
   category==wiki
   
http get https://apps.fedoraproject.org/datagrepper/raw \
   delta==172800 \
   user==bt0dotninja

Web

Programando

#!/usr/bin/env python3
# A simple class to get geographical data from fas and FedoraAsk 
# Alberto Rodriguez Sanchez bt0dotninja@fedoraproject.org
# Renato Silva resilva87@fedoraproject.org


from fedora.client.fas2 import AccountSystem
from fedora.client import AuthError
from collections import Counter
from datetime import datetime

import sys
import numpy as np
import pandas as pd
import json
import requests
import configparser


class geofp(object):
    '''
    An object for querying the Fedora Account System and get Geographical data from groups and the whole project 
    '''
    def __init__(self,ConfigFile):
        '''A Simple constructor for geofp object'''
        Config = configparser.ConfigParser()
        Config.read(ConfigFile)
        options = Config.options('FAS')
        userdata={}
        for opt in options:
            userdata[opt] = Config.get('FAS', opt)
        
        user=userdata['user']
        password=userdata['pass']
        self.members=None
        self.fas = AccountSystem(username=user, password=password)
    
    def by_group(self, group, active_date=None):
        '''get information by group'''
        groupMembers=self.fas.group_members(group)
        GeoData={}
        for member in groupMembers:
            gd=self.fas.people_by_key(key=u'username', search=member['username'])
            GeoData.update(gd)
        
        #To pandas DataFrame
        self.members=pd.DataFrame.from_dict(GeoData, orient='index')
        self.members['last_seen']=pd.to_datetime(self.members.last_seen)
        #subsetting by date
        if active_date!=None:
            self.members=self.members[(self.members.last_seen >= active_date) & (self.members.status == 'active')]
        return self.members

Ejemplo

Fedora Messaging

Reemplaza la antigua plataforma.

 

RESTless también.

 

Necesitamos ayuda

  • Migrar scripts
  • Nuevos deploys
  • Hacer un dashboard

Contacto

Fedora México

Gracias  

Made with Slides.com