Schedule student synchronization (Expose)
Situation
Source systems (Moodle)
DataWarehouse (Vertica)
App DataStore (Oracle)
+
Solution
> curl http://laa/user-mgr/ws/users-to-good-data
Vertica to Oracle
Oracle to GoodData
Users to GoodData
/students-from-data-warehouse
/students-to-good-data
/users-to-good-data
?
Technical Implications
[{"name" : "/ws/users-to-good-data",
"state" : "running",
"lastRunDate" : null
},{"name" : "/ws/students-from-data-warehouse",
"state" : "ready",
"lastRunDate" : "Tue Feb 17 12:28:24 EST 2015" }, ...]
/sync-jobs-status
Monitoring
Security
/user-mgr/ws/users-to-good-data
@Configuration@Order(1)
public class WebServicesSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/ws/**")
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}}
> curl USER:PASS http://laa/user-mgr/ws/users-to-good-data
Idempotency
public synchronized Future<Long> syncAppUsersWithGoodDataOnce() {
if (futureOfUsersSync == null || futureOfUsersSync.isDone()) {
futureOfUsersSync = startUsersSync();
}
return futureOfUsersSync;
}
Lost Solution & Demo