Python & Google Apps Domains

Presenter Notes

Contato

Eduardo Marcel Maçan

@eduardomacan

[email protected]

[email protected]

Presenter Notes

Como o trabalho deveria ser

Uma nova tarefa chega após o término da anterior

problem

Presenter Notes

Como ele realmente é

Uma tarefa demora mais do que o tempo médio de chegada de uma nova

problem

Presenter Notes

O problema

  • Número fixo de Contas Google
  • Número total de funcionários muito próximo ao limite
  • Rotatividade de Funcionários
    • Novas contas Precisam ser entregues rapidamente
    • Antigas contas Precisam ser removidas
    • Gestores querem acesso a emails antigos, futuros e documentos
  • Consequência: Demora na entrega de novas contas

Presenter Notes

A solução

Automatizar:

  • Transferir documentos google docs para responsável
  • Download de emails antigos para backup/"acesso offline"
  • Remover conta antiga
  • Criar nova conta google apps
  • Adicionar Alias para responsável
  • Remover alias para responsável após 30 dias

Presenter Notes

Enable Google Provisioning API

Só funciona para a versão "Business" ou "Educational" do apps

(Para testar, você pode habilitar gratuitamente por 30 dias)

problem

Presenter Notes

Warning

Isso significa que se você estiver gerenciando suas contas a partir de outra aplicação/base, contas criadas via web não serão autoMAGICAmente importadas para sua base proprietária e.g. LDAP (duh!)

problem

Presenter Notes

Sample Code

Lists all users in a Domain

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from getpass import getpass
import gdata.apps.service

DOMAIN = 'macan.eng.br'
username = raw_input('Admin  account : ')
password = getpass('Admin password : ')

service = gdata.apps.service.AppsService(email=username, domain=DOMAIN,
                                          password=password)
service.ProgrammaticLogin()

userfeed = service.RetrieveAllUsers()

for user in userfeed.entry:
  print user.login.user_name

Presenter Notes

Sample Code

Create a new apps account

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from getpass import getpass
import gdata.apps.service
DOMAIN = 'macan.eng.br' 
username = raw_input('Admin  email   : ')
password = getpass('Admin password : ')

service = gdata.apps.service.AppsService(email=username, domain=DOMAIN,
                                         password=password)
service.ProgrammaticLogin()

cont = True
while cont:
  nome = raw_input("Nome : ")
  sobrenome = raw_input("Sobrenome : ")
  login = raw_input("Login : ")
  senha = getpass("Senha : ")

  service.CreateUser(login, sobrenome, nome, senha )

  yesno= raw_input('Digite "s" para adicionar outro: ')
  cont = yesno=="s" or yesno == "S"
else: 
  print "Saindo..."

Presenter Notes

Sample Code

Add an alias

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from getpass import getpass
import gdata.apps.service

#change this to your google apps domain
DOMAIN='macan.eng.br'

username = raw_input('Admin    email : ')
password = getpass('Admin password : ')
olduser  = raw_input('Old user login : ')
manager  = raw_input('Add alias to   : ')

service = gdata.apps.service.AppsService(email=username, domain=DOMAIN, 
                                     password=password)
service.ProgrammaticLogin()

print "Adding nickname %s to %s" % (olduser,manager)
service.CreateNickname(manager,olduser)
print "Feito"

Presenter Notes

Obrigado!

Presenter Notes