Visualizzazione post con etichetta wsadmin. Mostra tutti i post
Visualizzazione post con etichetta wsadmin. Mostra tutti i post

giovedì 6 dicembre 2018

IBM Connections, come automatizzare la rimozione delle foto dagli utenti disabilitati

Uno dei miei clienti mi ha chiesto se fosse possibile rimuovere le foto dai profili degli utenti disabilitati da un certo numero di mesi in IBM Connections .

Questa non è una funzionalità disponibile nel prodotto con strumenti preconfezionati  ma fortunatamente Connections mette a disposizione tutte le informazioni per poterci riuscire.


Analizzate le varie possibilità , per semplicità  ho deciso di procedere con 2 script separati, uno sul server database ed uno su connections, dove il primo si occupa di estrarre gli utenti e di preparare in output uno script che viene eseguito su Connectons che rimuove le foto.

Come detto questa è una delle possibili soluzioni a questa richiesta e può essere risolta in modi alternativi.


Script Database server (nel mio caso Db2)

Le informazioni sono tutte disponibili nel db dei profili il PEOPLEDB

La parte fondamentale dello script da eseguire è questa select


select EMPINST.EMPLOYEE.PROF_GUID FROM EMPINST.EMPLOYEE
INNER JOIN EMPINST.PHOTO ON EMPINST.PHOTO.PROF_KEY = EMPINST.EMPLOYEE.PROF_KEY INNER JOIN EMPINST.PROFILE_LAST_LOGIN ON EMPINST.PROFILE_LAST_LOGIN.PROF_KEY = EMPINST.EMPLOYEE.PROF_KEY
WHERE EMPINST.EMPLOYEE.PROF_STATE='1' and timestampdiff (64, CURRENT TIMESTAMP -EMPINST.PROFILE_LAST_LOGIN.PROF_LAST_LOGIN) > X"

 dove X è il numero di mesi in cui l'utente disabilitato che ha una foto non si collega al suo profilo di connections.

se aggiungete dopo la query un | con awk simile al seguente 

 awk "{print \"ProfilesService.deletePhotoByUserId('\"\$1\"')\" }" >> clearphotos.py

ecco che ottenete un elenco di UID pronto per essere dato in pasto ad un wsadmin


con un utente per riga
...
ProfilesService.deletePhotoByUserId('11111111-222A-AA22-1122-11B222B11B22')
...

In testa a questo script se aggiungete 2 echo  il file è pronto per essere eseguito

echo "batchMode = 1" > clearphotos.py
echo "execfile('profilesAdmin.py')" >> clearphotos.py

batchMode =1 è necessario se avete un connections con più nodi, qui i dettagli,
Per completezza ho condiviso lo script , in questo repo di GitHub.

Script su DMGR di Connections

Qui non c'è nulla di particolare , quindi lo lascio alla vostra interpretazione, i passi da fare sono 3

  1. copia clearphotos,py in locale
  2. esecuzione dello script tramite wsadmin ( wsadmin.sh -lang jython -user connAdmin -password password -f clearphotos.py )
  3. log delle operazioni eseguite



In conclusione ho schedulato 2 crontab per eseguire i 2 script , partendo ovviamente dallo script per eseguire estrazione dati db,

sabato 18 giugno 2016

IBM Connections , search , index e alcuni comandi utili

Uno dei task piu' importanti di IBM Connections è la search perchè permette di trovare contenuti all'interno dell'ambiente e lo mantiene funzionante.

Sono quindi disponibili diversi e fondamentali comandi che possiamo usare tramite un prompt di wsadmin per regolarne il funzionamento.


Prompt wsadmin

Tutta l'amministrazione avanzata di Connections si fa da questo prompt, per aprirlo dovete procedere come nell'esempio seguente:

  • cd /opt/ibm/WebSphere/AppServer/profiles/Dmgr01/bin
  • ./wsadmin.sh -lang jython -user waslocal -password password
Al momento non ci sono alternative IBM che forniscano una GUI per questi comandi ma ci sono prodotti validi di terze parti ad esempio forniti ad esempio da  Time To Act , o Infoware che vi permettono di eseguire comandi da Console Web.
.
Comandi utili search

Una volta che avete aperto il prompt wsadmin, dovete inizializzare l'amministrazione 

execfile("searchAdmin.py")

Alcuni dei comandi possono avere come argomento uno "string applicatioNnames" di utilizzo che può essere uno fra i seguenti:

  • activities
  • blogs
  • calendar
  • communities
  • dogear
  • ecm_files
  • files
  • forums
  • people_finder
  • profiles
  • status_updates
  • wikis.
  • all_configured 
Questo significa che possiamo lanciare comandi per cancellare o ricreare uno specifico indice di una specifica applicazione, oppure se usiamo l'ultima voce all_configured, vale per tutte le applicazioni presenti.


Ecco alcuni esempi


Il seguente comando ci permette di rimuovere un indice di ricerca specificato , ad esempio se ci accorgiamo di insesattezze o errori:

SearchService.deleteFeatureIndex("blogs")


Il seguente ci permette di indicizzare l'applicazione specificata, inserento un valore fra quelli precendentemente indicati, ad esempio blogs

SearchService.indexNow("blogs") 

Durante l'esecuzione dei comandi di indexnow o di deleteFeatureIndex vi consiglio di aprire in tail l'indice per verificare l'output di eventuali errori.


Backup Indice

Quando avete un ambiente particolarmente corposo potreste avere necessità di creare un backup dell'indice in modo da poterlo ripristinare rapidamente in caso di corruzione.

SearchService.backupIndexNow()

vi eseguirà un backup dell'indice nella posizione specificata dalla variabile di ambinete WebSphere  SEARCH_INDEX_BACKUP_DIR (la potete gestire dalla console del DMGR).

Se volete schedulare un backup potete appoggiarvi allo schedulatore di connections e schedularne uno con il comando specifico:

il primo argomento è il nome del task, il secondo l'orario di partenza, il terzo la cancellazione del task in caso non sia finito.

SearchService.addBackupIndexTask("WeeklyIndexBackup", "0 0 2 ? * SAT","0 10 2 ? * SAT")

Il backup come nel caso precedente verrà posizionato in SEARCH_INDEX_BACKUP_DIR


Se in seguito volessimo rimuovere il task di backup creato precedentemente:

SearchService.deleteTask("WeeklyIndexBackup")



Restore Indice

Per eseguire un restore dell'indice di Connections è necessario prima fermare tutti i task di indicizzazione e preparare il database HOMEPAGE al load dei nuovi indici
  • SearchService.disableAllTasks()
  • SearchService.notifyRestore("false")
Poi dovremo fermare il servr di search, cancellare indice, eseguire la copia dalla folder del backup , riaccendere il server riabilitare i task di search. e all'ultimo nodo notificare al db di HOMEPAGE il restore avvenuto:

  • Stop server search
  • cancellazione indicie attuale
  • restore dell'indice backuppato in SEARCH_INDEX_BACKUP_DIR
  • Riaccensione server searchRi abilitazione dei servizi di search SearchService.enableAllTasks()
  • SearchService.notifyRestore("true")

Reload indice
In alcuni casi può essere necessario ricaricare l'indice, si può eseguire con uno dei seguenti comandi



  • SearchService.reloadIndex()
  • SearchService.reloadIndexAllNodes()
Il primo esegue il reload sul nodo corrente, i secondo su tutti i nodi di search disponibili



Search Status Page

Se volete controllare lo stato generale della search, potete consultare il seguente URL

https://connections.domain.com/search/serverStatus

dopo esservi autenticati con un utente che dispone di ruolo amministrativo sull'applicazione Search verrà caricato lo stato con eventuali errori.

giovedì 25 giugno 2015

IBM connections tip: come ottenere history dei comandi in wsadmin sotto linux

Oggi lavorando con un collega ci stavamo chiedendo se si potesse avere l'history in wsadmin.sh ed abbiamo trovato la risposta nel blog di Christoph Stoettner .

Se installate l'utility rlwrap e lanciate il wsadmin dopo di lei l'history sarà disponibile.

Su sless ho installato rlrap tramite zypper

zypper in rlwrap



poi lanciato il comando 

rlwrap -r /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -username waslocal -password password

ottenete il wsadmin con history ! 



Thanks Christoph for this tip !