Search in sources :

Example 1 with ExportImportSessionTask

use of org.keycloak.exportimport.util.ExportImportSessionTask in project keycloak by keycloak.

the class SingleFileImportProvider method importModel.

@Override
public void importModel(KeycloakSessionFactory factory, final Strategy strategy) throws IOException {
    logger.infof("Full importing from file %s", this.file.getAbsolutePath());
    checkRealmReps();
    KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

        @Override
        protected void runExportImportTask(KeycloakSession session) throws IOException {
            ImportUtils.importRealms(session, realmReps.values(), strategy);
        }
    });
}
Also used : KeycloakSession(org.keycloak.models.KeycloakSession) IOException(java.io.IOException) ExportImportSessionTask(org.keycloak.exportimport.util.ExportImportSessionTask)

Example 2 with ExportImportSessionTask

use of org.keycloak.exportimport.util.ExportImportSessionTask in project keycloak by keycloak.

the class DirImportProvider method importRealm.

@Override
public void importRealm(KeycloakSessionFactory factory, final String realmName, final Strategy strategy) throws IOException {
    File realmFile = new File(this.rootDirectory + File.separator + realmName + "-realm.json");
    File[] userFiles = this.rootDirectory.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            return name.matches(realmName + "-users-[0-9]+\\.json");
        }
    });
    File[] federatedUserFiles = this.rootDirectory.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            return name.matches(realmName + "-federated-users-[0-9]+\\.json");
        }
    });
    // Import realm first
    FileInputStream is = new FileInputStream(realmFile);
    final RealmRepresentation realmRep = JsonSerialization.readValue(is, RealmRepresentation.class);
    final AtomicBoolean realmImported = new AtomicBoolean();
    KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

        @Override
        public void runExportImportTask(KeycloakSession session) throws IOException {
            boolean imported = ImportUtils.importRealm(session, realmRep, strategy, true);
            realmImported.set(imported);
        }
    });
    if (realmImported.get()) {
        // Import users
        for (final File userFile : userFiles) {
            final FileInputStream fis = new FileInputStream(userFile);
            KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

                @Override
                protected void runExportImportTask(KeycloakSession session) throws IOException {
                    ImportUtils.importUsersFromStream(session, realmName, JsonSerialization.mapper, fis);
                    logger.infof("Imported users from %s", userFile.getAbsolutePath());
                }
            });
        }
        for (final File userFile : federatedUserFiles) {
            final FileInputStream fis = new FileInputStream(userFile);
            KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

                @Override
                protected void runExportImportTask(KeycloakSession session) throws IOException {
                    ImportUtils.importFederatedUsersFromStream(session, realmName, JsonSerialization.mapper, fis);
                    logger.infof("Imported federated users from %s", userFile.getAbsolutePath());
                }
            });
        }
    }
    // Import authorization and initialize service accounts last, as they require users already in DB
    KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

        @Override
        public void runExportImportTask(KeycloakSession session) throws IOException {
            RealmManager realmManager = new RealmManager(session);
            realmManager.setupClientServiceAccountsAndAuthorizationOnImport(realmRep, false);
        }
    });
}
Also used : FilenameFilter(java.io.FilenameFilter) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) RealmRepresentation(org.keycloak.representations.idm.RealmRepresentation) KeycloakSession(org.keycloak.models.KeycloakSession) IOException(java.io.IOException) RealmManager(org.keycloak.services.managers.RealmManager) ExportImportSessionTask(org.keycloak.exportimport.util.ExportImportSessionTask) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 3 with ExportImportSessionTask

use of org.keycloak.exportimport.util.ExportImportSessionTask in project keycloak by keycloak.

the class SingleFileExportProvider method exportModel.

@Override
public void exportModel(KeycloakSessionFactory factory) throws IOException {
    logger.infof("Exporting model into file %s", this.file.getAbsolutePath());
    KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

        @Override
        protected void runExportImportTask(KeycloakSession session) throws IOException {
            Stream<RealmRepresentation> realms = session.realms().getRealmsStream().map(realm -> ExportUtils.exportRealm(session, realm, true, true));
            writeToFile(realms);
        }
    });
}
Also used : RealmModel(org.keycloak.models.RealmModel) ExportUtils(org.keycloak.exportimport.util.ExportUtils) KeycloakModelUtils(org.keycloak.models.utils.KeycloakModelUtils) Logger(org.jboss.logging.Logger) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) KeycloakSession(org.keycloak.models.KeycloakSession) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) ObjectMapperResolver(org.keycloak.services.util.ObjectMapperResolver) RealmRepresentation(org.keycloak.representations.idm.RealmRepresentation) File(java.io.File) ExportProvider(org.keycloak.exportimport.ExportProvider) Stream(java.util.stream.Stream) ExportImportSessionTask(org.keycloak.exportimport.util.ExportImportSessionTask) KeycloakSessionFactory(org.keycloak.models.KeycloakSessionFactory) SerializationFeature(com.fasterxml.jackson.databind.SerializationFeature) KeycloakSession(org.keycloak.models.KeycloakSession) FileOutputStream(java.io.FileOutputStream) Stream(java.util.stream.Stream) IOException(java.io.IOException) ExportImportSessionTask(org.keycloak.exportimport.util.ExportImportSessionTask)

Example 4 with ExportImportSessionTask

use of org.keycloak.exportimport.util.ExportImportSessionTask in project keycloak by keycloak.

the class SingleFileExportProvider method exportRealm.

@Override
public void exportRealm(KeycloakSessionFactory factory, final String realmName) throws IOException {
    logger.infof("Exporting realm '%s' into file %s", realmName, this.file.getAbsolutePath());
    KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {

        @Override
        protected void runExportImportTask(KeycloakSession session) throws IOException {
            RealmModel realm = session.realms().getRealmByName(realmName);
            RealmRepresentation realmRep = ExportUtils.exportRealm(session, realm, true, true);
            writeToFile(realmRep);
        }
    });
}
Also used : RealmModel(org.keycloak.models.RealmModel) KeycloakSession(org.keycloak.models.KeycloakSession) RealmRepresentation(org.keycloak.representations.idm.RealmRepresentation) IOException(java.io.IOException) ExportImportSessionTask(org.keycloak.exportimport.util.ExportImportSessionTask)

Aggregations

IOException (java.io.IOException)4 ExportImportSessionTask (org.keycloak.exportimport.util.ExportImportSessionTask)4 KeycloakSession (org.keycloak.models.KeycloakSession)4 RealmRepresentation (org.keycloak.representations.idm.RealmRepresentation)3 File (java.io.File)2 RealmModel (org.keycloak.models.RealmModel)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 SerializationFeature (com.fasterxml.jackson.databind.SerializationFeature)1 FileInputStream (java.io.FileInputStream)1 FileOutputStream (java.io.FileOutputStream)1 FilenameFilter (java.io.FilenameFilter)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 Stream (java.util.stream.Stream)1 Logger (org.jboss.logging.Logger)1 ExportProvider (org.keycloak.exportimport.ExportProvider)1 ExportUtils (org.keycloak.exportimport.util.ExportUtils)1 KeycloakSessionFactory (org.keycloak.models.KeycloakSessionFactory)1 KeycloakModelUtils (org.keycloak.models.utils.KeycloakModelUtils)1 RealmManager (org.keycloak.services.managers.RealmManager)1 ObjectMapperResolver (org.keycloak.services.util.ObjectMapperResolver)1