You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by pp...@apache.org on 2022/02/01 14:49:57 UTC

[incubator-datalab] 02/03: [spring-migration] provisioning sevice

This is an automated email from the ASF dual-hosted git repository.

ppapou pushed a commit to branch spring-migration
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 222d68f9e0957c7259333752653b77480fac20d4
Author: Pavel Papou <pp...@gmail.com>
AuthorDate: Sun Jan 23 10:26:07 2022 -0500

    [spring-migration] provisioning sevice
    
     - main class has been asjusted
     - config structure has been change
---
 .../src/ssn/templates/ssn.yml                      | 12 ++--
 services/billing-gcp/pom.xml                       |  2 +-
 services/datalab-webapp-common/pom.xml             | 12 ++++
 .../java/com/epam/datalab/cloud/CloudModule.java   |  2 +-
 services/provisioning-service/pom.xml              |  4 +-
 services/provisioning-service/provisioning.yml     | 72 ++++++++++++----------
 .../DropwizardBearerTokenFilterImpl.java           | 39 ------------
 .../backendapi/ProvisioningServiceApplication.java | 66 ++++++++++++++++----
 ...rovisioningServiceApplicationConfiguration.java | 54 ++++++++++++----
 .../backendapi/conf/SecurityConfiguration.java     | 55 +++++++++++++++++
 .../datalab/backendapi/core/DockerWarmuper.java    | 22 +++----
 .../response/folderlistener/AsyncFileHandler.java  |  5 +-
 .../folderlistener/FolderListenerExecutor.java     | 18 ++++--
 .../response/folderlistener/WatchItemList.java     |  5 +-
 .../response/handlers/ComputationalConfigure.java  | 15 +++--
 .../handlers/dao/FileSystemCallbackHandlerDao.java | 16 +++--
 .../backendapi/modules/AwsProvisioningModule.java  | 24 +++++---
 .../modules/CloudModuleConfigurator.java           |  4 +-
 .../backendapi/resources/BackupResource.java       |  9 +--
 .../resources/ProvisioningHealthCheckResource.java |  3 +-
 .../resources/aws/ComputationalResourceAws.java    |  3 +-
 .../resources/gcp/ComputationalResourceGcp.java    |  5 +-
 .../backendapi/resources/gcp/EdgeResourceGcp.java  |  4 +-
 .../resources/gcp/ExploratoryResourceGcp.java      |  4 +-
 .../resources/gcp/InfrastructureResourceGcp.java   |  3 +
 .../service/impl/CheckInactivityServiceImpl.java   |  3 +-
 .../backendapi/service/impl/DockerService.java     | 11 ++--
 .../backendapi/service/impl/KeyService.java        |  6 +-
 .../backendapi/service/impl/OdahuServiceImpl.java  |  3 +-
 .../service/impl/ProjectServiceImpl.java           |  5 +-
 .../impl/RestoreCallbackHandlerServiceImpl.java    | 23 +++----
 .../service/impl/SparkClusterService.java          |  6 +-
 .../service/impl/aws/BucketServiceAwsImpl.java     |  2 +
 .../service/impl/azure/BucketServiceAzureImpl.java |  5 +-
 .../service/impl/gcp/BucketServiceGcpImpl.java     |  2 +
 .../epam/datalab/process/model/DatalabProcess.java |  5 +-
 .../backendapi/core/DockerWarmuperTest.java        |  5 +-
 .../response/folderlistener/WatchItemTest.java     |  5 +-
 .../RestoreCallbackHandlerServiceImplTest.java     |  7 ++-
 services/self-service/self-service.yml             | 22 +++----
 40 files changed, 365 insertions(+), 203 deletions(-)

diff --git a/infrastructure-provisioning/src/ssn/templates/ssn.yml b/infrastructure-provisioning/src/ssn/templates/ssn.yml
index 8720ef2..4a5ff8d 100644
--- a/infrastructure-provisioning/src/ssn/templates/ssn.yml
+++ b/infrastructure-provisioning/src/ssn/templates/ssn.yml
@@ -20,26 +20,26 @@
 # ******************************************************************************
 
 <#assign LOG_ROOT_DIR="/var/opt/datalab/log">
-<#assign KEYS_DIR="/home/${sys['user.name']}/keys">
+<#assign KEYS_DIR="/home/pavel/keys">
 <#assign KEY_STORE_PATH="${KEYS_DIR}/ssn.keystore.jks">
 <#assign KEY_STORE_PASSWORD="KEYSTORE_PASSWORD">
-<#assign TRUST_STORE_PATH="${JRE_HOME}/lib/security/cacerts">
+<#assign TRUST_STORE_PATH="/opt/jdk1.8.0_202/jre/lib/security/cacerts">
 <#assign TRUST_STORE_PASSWORD="changeit">
 
 # Available options are aws, azure, gcp
-<#assign CLOUD_TYPE="CLOUD_PROVIDER">
+<#assign CLOUD_TYPE="GCP">
 cloudProvider: ${CLOUD_TYPE}
 
 #Switch on/off developer mode here
-<#assign DEV_MODE="false">
+<#assign DEV_MODE="true">
 devMode: ${DEV_MODE}
 
 mongo:
   host: localhost
   port: 27017
   username: admin
-  password: MONGO_PASSWORD
-  database: datalabdb
+  password: admin
+  database: pavel
 
 selfService:
   protocol: https
diff --git a/services/billing-gcp/pom.xml b/services/billing-gcp/pom.xml
index fa4bbcf..bc3034d 100644
--- a/services/billing-gcp/pom.xml
+++ b/services/billing-gcp/pom.xml
@@ -61,7 +61,7 @@
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
+            <artifactId>spring-boot-starter</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/services/datalab-webapp-common/pom.xml b/services/datalab-webapp-common/pom.xml
index b42da46..6011fbe 100644
--- a/services/datalab-webapp-common/pom.xml
+++ b/services/datalab-webapp-common/pom.xml
@@ -70,5 +70,17 @@
             <artifactId>commons-io</artifactId>
             <version>2.4</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>4.0.6.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>4.0.6.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/services/datalab-webapp-common/src/main/java/com/epam/datalab/cloud/CloudModule.java b/services/datalab-webapp-common/src/main/java/com/epam/datalab/cloud/CloudModule.java
index 7be15b1..b87c1b0 100644
--- a/services/datalab-webapp-common/src/main/java/com/epam/datalab/cloud/CloudModule.java
+++ b/services/datalab-webapp-common/src/main/java/com/epam/datalab/cloud/CloudModule.java
@@ -23,6 +23,7 @@ import com.google.inject.AbstractModule;
 import com.google.inject.Injector;
 import io.dropwizard.setup.Environment;
 
+//TODO: the object can be removed and replaced by spring annotations
 public abstract class CloudModule extends AbstractModule {
 
     @Override
@@ -30,5 +31,4 @@ public abstract class CloudModule extends AbstractModule {
     }
 
     public abstract void init(Environment environment, Injector injector);
-
 }
diff --git a/services/provisioning-service/pom.xml b/services/provisioning-service/pom.xml
index 5a9bdee..444938c 100644
--- a/services/provisioning-service/pom.xml
+++ b/services/provisioning-service/pom.xml
@@ -74,11 +74,11 @@
             <groupId>com.epam.datalab</groupId>
             <artifactId>common</artifactId>
         </dependency>
-        <dependency>
+        <!--dependency>
             <groupId>de.ahus1.keycloak.dropwizard</groupId>
             <artifactId>keycloak-dropwizard</artifactId>
             <version>1.1.1</version>
-        </dependency>
+        </dependency-->
         <dependency>
             <groupId>de.thomaskrille</groupId>
             <artifactId>dropwizard-template-config</artifactId>
diff --git a/services/provisioning-service/provisioning.yml b/services/provisioning-service/provisioning.yml
index b6ced32..a657763 100644
--- a/services/provisioning-service/provisioning.yml
+++ b/services/provisioning-service/provisioning.yml
@@ -19,26 +19,26 @@
 #
 # ******************************************************************************
 
-  <#include "ssn.yml">
+#---"infrastructure-provisioning/src/ssn/templates/ssn.yml"
 
 backupScriptPath: /opt/datalab/tmp/backup.py
 backupDirectory: /opt/datalab/tmp/result
-keyDirectory: ${KEYS_DIR}
+keyDirectory: /home/pavel/keys
 responseDirectory: /opt/datalab/tmp
 handlerDirectory: /opt/datalab/handlers
-dockerLogDirectory: ${LOG_ROOT_DIR}
-warmupPollTimeout: 2m
-resourceStatusPollTimeout: 400m
+dockerLogDirectory: /var/opt/datalab/log
+warmupPollTimeout: 50s
+resourceStatusPollTimeout: 300m
 keyLoaderPollTimeout: 30m
 requestEnvStatusTimeout: 50s
 adminKey: KEYNAME
 edgeImage: docker.datalab-edge
 fileLengthCheckDelay: 500ms
 
-  <#if CLOUD_TYPE == "aws">
+#<#if CLOUD_TYPE == "aws">
 emrEC2RoleDefault: EMR_EC2_DefaultRole
 emrServiceRoleDefault: EMR_DefaultRole
-</#if>
+#</#if>
 
 processMaxThreadsPerJvm: 50
 processMaxThreadsPerUser: 5
@@ -46,7 +46,16 @@ processTimeout: 180m
 
 handlersPersistenceEnabled: true
 
+cloudProvider: GCP
+
 server:
+  port: 8084
+  type: https
+  ssl:
+    key-store: /home/pavel/keys/ssn.keystore.jks
+    key-store-type: JKS
+    key-alias: ssn
+    key-store-password: KEYSTORE_PASSWORD
   requestLog:
     appenders:
       - type: file
@@ -55,15 +64,15 @@ server:
         archivedLogFilenamePattern: ${LOG_ROOT_DIR}/ssn/request-provisioning-%d{yyyy-MM-dd}.log.gz
         archivedFileCount: 10
   applicationConnectors:
-#    - type: http
-    - type: https
-      port: 8084
-      certAlias: ssn
-      validateCerts: false
-      keyStorePath: ${KEY_STORE_PATH}
-      keyStorePassword: ${KEY_STORE_PASSWORD}
-      trustStorePath: ${TRUST_STORE_PATH}
-      trustStorePassword: ${TRUST_STORE_PASSWORD}
+##    - type: http
+#    - type: https
+#      port: 8084
+#      certAlias: ssn
+#      validateCerts: false
+#      keyStorePath: ${KEY_STORE_PATH}
+#      keyStorePassword: ${KEY_STORE_PASSWORD}
+#      trustStorePath: ${TRUST_STORE_PATH}
+#      trustStorePassword: ${TRUST_STORE_PASSWORD}
   adminConnectors:
 #    - type: http
     - type: https
@@ -76,30 +85,31 @@ server:
       trustStorePassword: ${TRUST_STORE_PASSWORD}
 
 logging:
-  level: INFO
-  loggers:
-    com.epam: TRACE
-    com.aegisql: INFO
+  level:
+    root: ERROR
+    com:
+      epam: DEBUG
+      aegisql: INFO
   appenders:
-<#if DEV_MODE == "true">
+#<#if DEV_MODE == "true">
     - type: console
-</#if>
-    - type: file
+#</#if>
+#    - type: file
       currentLogFilename: ${LOG_ROOT_DIR}/ssn/provisioning.log
       archive: true
       archivedLogFilenamePattern: ${LOG_ROOT_DIR}/ssn/provisioning-%d{yyyy-MM-dd}.log.gz
       archivedFileCount: 10
 
-keycloakConfiguration:
-  realm: KEYCLOAK_REALM_NAME
+keycloak:
+  realm: DLAB_bhliva
   bearer-only: true
-  auth-server-url: KEYCLOAK_AUTH_SERVER_URL
+  auth-server-url: http://52.11.45.11:8080/auth
   ssl-required: none
   register-node-at-startup: true
   register-node-period: 600
-  resource: KEYCLOAK_CLIENT_NAME
+  resource: sss
   credentials:
-    secret: KEYCLOAK_CLIENT_SECRET
+    secret: cf5a484b-039b-4161-8707-ad65c0f25962
 
 cloudProperties:
   os: CONF_OS
@@ -122,7 +132,7 @@ cloudProperties:
   datalakeTagName: AZURE_DATALAKE_TAG
   azureClientId: AZURE_CLIENT_ID
   gcpProjectId: GCP_PROJECT_ID
-  imageEnabled: CONF_IMAGE_ENABLED
+  imageEnabled: true
   azureAuthFile: AZURE_AUTH_FILE_PATH
   ldap:
     host: LDAP_HOST
@@ -131,7 +141,7 @@ cloudProperties:
     user: LDAP_USER_NAME
     password: LDAP_USER_PASSWORD
   stepCerts:
-    enabled: STEP_CERTS_ENABLED
+    enabled: true
     rootCA: STEP_ROOT_CA
     kid: STEP_KID_ID
     kidPassword: STEP_KID_PASSWORD
@@ -140,4 +150,4 @@ cloudProperties:
     auth_server_url: KEYCLOAK_AUTH_SERVER_URL
     realm_name: KEYCLOAK_REALM_NAME
     user: KEYCLOAK_USER_NAME
-    user_password: KEYCLOAK_PASSWORD
\ No newline at end of file
+    user_password: KEYCLOAK_PASSWORD
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/DropwizardBearerTokenFilterImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/DropwizardBearerTokenFilterImpl.java
deleted file mode 100644
index d0a36ba..0000000
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/DropwizardBearerTokenFilterImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package com.epam.datalab.backendapi;
-
-import org.keycloak.adapters.AdapterDeploymentContext;
-import org.keycloak.adapters.KeycloakDeployment;
-import org.keycloak.adapters.NodesRegistrationManagement;
-import org.keycloak.jaxrs.JaxrsBearerTokenFilterImpl;
-
-import javax.annotation.Priority;
-import javax.ws.rs.Priorities;
-import javax.ws.rs.container.PreMatching;
-
-@PreMatching
-@Priority(Priorities.AUTHENTICATION)
-public class DropwizardBearerTokenFilterImpl extends JaxrsBearerTokenFilterImpl {
-
-    public DropwizardBearerTokenFilterImpl(KeycloakDeployment keycloakDeployment) {
-        deploymentContext = new AdapterDeploymentContext(keycloakDeployment);
-        nodesRegistrationManagement = new NodesRegistrationManagement();
-    }
-}
\ No newline at end of file
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplication.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplication.java
index e331980..52b749a 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplication.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplication.java
@@ -29,6 +29,7 @@ import com.epam.datalab.backendapi.resources.*;
 import com.epam.datalab.backendapi.resources.base.KeyResource;
 import com.epam.datalab.backendapi.service.impl.RestoreCallbackHandlerServiceImpl;
 import com.epam.datalab.cloud.CloudModule;
+import com.epam.datalab.exceptions.InitializationException;
 import com.epam.datalab.process.model.DatalabProcess;
 import com.epam.datalab.rest.client.RESTService;
 import com.epam.datalab.rest.mappers.JsonProcessingExceptionMapper;
@@ -38,12 +39,12 @@ import com.fasterxml.jackson.databind.InjectableValues;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import de.ahus1.keycloak.dropwizard.AbstractKeycloakAuthenticator;
-import de.ahus1.keycloak.dropwizard.KeycloakBundle;
-import de.ahus1.keycloak.dropwizard.KeycloakConfiguration;
-import de.thomaskrille.dropwizard_template_config.TemplateConfigBundle;
-import de.thomaskrille.dropwizard_template_config.TemplateConfigBundleConfiguration;
-import io.dropwizard.Application;
+//import de.ahus1.keycloak.dropwizard.AbstractKeycloakAuthenticator;
+//import de.ahus1.keycloak.dropwizard.KeycloakBundle;
+//import de.ahus1.keycloak.dropwizard.KeycloakConfiguration;
+//import de.thomaskrille.dropwizard_template_config.TemplateConfigBundle;
+//import de.thomaskrille.dropwizard_template_config.TemplateConfigBundleConfiguration;
+/*import io.dropwizard.Application;
 import io.dropwizard.auth.Authenticator;
 import io.dropwizard.auth.Authorizer;
 import io.dropwizard.forms.MultiPartBundle;
@@ -51,6 +52,7 @@ import io.dropwizard.jersey.setup.JerseyEnvironment;
 import io.dropwizard.setup.Bootstrap;
 import io.dropwizard.setup.Environment;
 import org.keycloak.KeycloakSecurityContext;
+*/
 /*
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
@@ -59,24 +61,64 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 */
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.EnvironmentAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
 import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletRequest;
 import java.security.Principal;
-
-public class ProvisioningServiceApplication extends Application<ProvisioningServiceApplicationConfiguration> {
-
-    public static void main(String[] args) throws Exception {
+import java.util.Arrays;
+
+@SpringBootApplication
+@EnableMongoRepositories
+//@EnableConfigurationProperties(ProvisioningServiceApplicationConfiguration.class)
+public class ProvisioningServiceApplication implements ApplicationRunner{
+//TODO: thrown Exception class has been removed. See the distinguish.
+    //TODO: Double check with Keycloak barear filter impl!!!
+
+    @Autowired//Is it required to proceed with component annotation for ProvisioningServiceApplication
+    //Is there way to get an env from the context
+    private Environment environment;
+    
+    @Autowired//TODO: read about autowired abd EnableConfigurationProperties
+    //Is there way to get a configuration from the context
+    private ProvisioningServiceApplicationConfiguration configuration;
+
+    public static void main(String[] args) {
         if (ServiceUtils.printAppVersion(ProvisioningServiceApplication.class, args)) {
             return;
         }
-        new ProvisioningServiceApplication().run(args);
+        new SpringApplicationBuilder()
+                .sources(ProvisioningServiceApplication.class)
+                .build()
+                .run(args);
     }
 
     @Override
+    public void run(ApplicationArguments arg){
+        DatalabProcess.getInstance().setProcessTimeout(configuration.getProcessTimeout());
+        DatalabProcess.getInstance().setMaxProcessesPerBox(configuration.getProcessMaxThreadsPerJvm());
+        DatalabProcess.getInstance().setMaxProcessesPerUser(configuration.getProcessMaxThreadsPerUser());
+
+        //CloudModule cloudModule = CloudModuleConfigurator.getCloudModule(configuration);
+
+        System.out.println("Docker directory: " + environment.getProperty("dockerLogDirectory"));
+        System.out.println("Cloud provider: " + configuration.getCloudProvider());
+        System.out.println("T/O: " + configuration.getProcessTimeout());
+    }
+    /*
+    @Override
     public void initialize(Bootstrap<ProvisioningServiceApplicationConfiguration> bootstrap) {
         bootstrap.addBundle(new MultiPartBundle());
         bootstrap.addBundle(new TemplateConfigBundle(
@@ -162,4 +204,6 @@ public class ProvisioningServiceApplication extends Application<ProvisioningServ
         jersey.register(injector.getInstance(ProvisioningHealthCheckResource.class));
         environment.jersey().register(injector.getInstance(BucketResource.class));
     }
+
+     */
 }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplicationConfiguration.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplicationConfiguration.java
index 84ff288..73bed31 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplicationConfiguration.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/ProvisioningServiceApplicationConfiguration.java
@@ -25,78 +25,110 @@ import com.epam.datalab.backendapi.core.Directories;
 import com.epam.datalab.backendapi.validation.ProvisioningServiceCloudConfigurationSequenceProvider;
 import com.epam.datalab.validation.AwsValidation;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import de.ahus1.keycloak.dropwizard.KeycloakConfiguration;
-import io.dropwizard.util.Duration;
+//import de.ahus1.keycloak.dropwizard.KeycloakConfiguration;
+import java.time.Duration;
+import lombok.Setter;
+//import io.dropwizard.util.Duration;
 import org.hibernate.validator.constraints.NotEmpty;
 import org.hibernate.validator.group.GroupSequenceProvider;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
 
+//TODO: overview the configuration annotation
+@Configuration
+//@ConfigurationProperties
 @GroupSequenceProvider(ProvisioningServiceCloudConfigurationSequenceProvider.class)
 public class ProvisioningServiceApplicationConfiguration extends ServiceConfiguration implements Directories {
 
     @NotEmpty
     @JsonProperty
+    @Setter //TODO: Required for spring
     private String keyDirectory;
 
     @NotEmpty
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String responseDirectory;
 
     @NotEmpty
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String dockerLogDirectory;
 
+    @JsonProperty
+    @Setter //TODO: reqs for spring?
+    private String cloudProvider;
+
     @NotEmpty
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String handlerDirectory;
 
     @JsonProperty
+    @Setter //TODO: req for spring
     private Duration warmupPollTimeout;
 
     @JsonProperty
-    private Duration resourceStatusPollTimeout = Duration.minutes(3);
+    @Setter //TODO: reqs for spring?
+    private Duration resourceStatusPollTimeout = Duration.ofMinutes(3);
 
     @JsonProperty
-    private Duration keyLoaderPollTimeout = Duration.minutes(2);
+    @Setter //TODO: reqs for spring?
+    private Duration keyLoaderPollTimeout = Duration.ofMinutes(2);
 
     @JsonProperty
-    private Duration requestEnvStatusTimeout = Duration.seconds(30);
+    @Setter //TODO: reqs for spring?
+    private Duration requestEnvStatusTimeout = Duration.ofSeconds(30);
 
     @NotEmpty
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String adminKey;
 
     @NotEmpty
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String edgeImage;
 
     @JsonProperty
-    private Duration fileLengthCheckDelay = Duration.seconds(3);
+    @Setter //TODO: reqs for spring?
+    private Duration fileLengthCheckDelay = Duration.ofSeconds(3);
 
     @NotEmpty(groups = AwsValidation.class)
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String emrEC2RoleDefault;
 
     @NotEmpty(groups = AwsValidation.class)
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String emrServiceRoleDefault;
 
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private int processMaxThreadsPerJvm = 50;
 
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private int processMaxThreadsPerUser = 5;
 
     @JsonProperty
-    private Duration processTimeout = Duration.hours(3);
+    @Setter //TODO: reqs for spring?
+    private Duration processTimeout = Duration.ofHours(3);
+
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String backupScriptPath;
+
     @JsonProperty
+    @Setter //TODO: reqs for spring?
     private String backupDirectory;
+
     @JsonProperty
+    @Setter //TODO: setter is required for spring
     private boolean handlersPersistenceEnabled;
 
-    private KeycloakConfiguration keycloakConfiguration = new KeycloakConfiguration();
-
     @JsonProperty("cloudProperties")
     private CloudConfiguration cloudConfiguration;
 
@@ -187,10 +219,6 @@ public class ProvisioningServiceApplicationConfiguration extends ServiceConfigur
         return handlerDirectory;
     }
 
-    public KeycloakConfiguration getKeycloakConfiguration() {
-        return keycloakConfiguration;
-    }
-
     public CloudConfiguration getCloudConfiguration() {
         return cloudConfiguration;
     }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java
new file mode 100644
index 0000000..0f36c3d
--- /dev/null
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/conf/SecurityConfiguration.java
@@ -0,0 +1,55 @@
+package com.epam.datalab.backendapi.conf;
+
+import org.keycloak.adapters.KeycloakConfigResolver;
+import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
+import org.keycloak.adapters.springsecurity.KeycloakConfiguration;
+import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents;
+import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;
+import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;
+import org.springframework.security.core.session.SessionRegistryImpl;
+import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy;
+import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
+
+@Configuration
+@ComponentScan(
+        basePackageClasses = KeycloakSecurityComponents.class,
+        excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.keycloak.adapters.springsecurity.management.HttpSessionManager"))
+public class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter {
+
+    @Autowired
+    public void configureGlobal(AuthenticationManagerBuilder auth) {
+        KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
+        keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
+        auth.authenticationProvider(keycloakAuthenticationProvider);
+    }
+
+    @Bean
+    public KeycloakConfigResolver keycloakConfigResolver() {
+        return new KeycloakSpringBootConfigResolver();
+    }
+
+    @Bean
+    @Override
+    protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
+        return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
+    }
+
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        super.configure(http);
+        http
+            .anonymous().disable()
+            .authorizeRequests()
+            .anyRequest()
+            .authenticated();
+    }
+
+}
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/DockerWarmuper.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/DockerWarmuper.java
index eebb032..0893229 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/DockerWarmuper.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/DockerWarmuper.java
@@ -32,12 +32,14 @@ import com.epam.datalab.process.model.ProcessInfo;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.JsonNode;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
+//import com.google.inject.Inject;
+//import com.google.inject.Singleton;
 import io.dropwizard.lifecycle.Managed;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -45,23 +47,23 @@ import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
-@Singleton
+@Scope("singleton")
 @Slf4j
-public class DockerWarmuper implements Managed, DockerCommands, MetadataHolder {
+public class DockerWarmuper implements DockerCommands, MetadataHolder {
     private static final Logger LOGGER = LoggerFactory.getLogger(DockerWarmuper.class);
     public static final String EXPLORATORY_RESPONSE_MARKER = "exploratory_environment_shapes";
 
-    @Inject
+    @Autowired
     private ProvisioningServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     private FolderListenerExecutor folderListenerExecutor;
-    @Inject
+    @Autowired
     private ICommandExecutor commandExecutor;
+
     private final Map<String, String> imageList = new ConcurrentHashMap<>();
     private final Set<ImageMetadataDTO> metadataDTOs = ConcurrentHashMap.newKeySet();
 
 
-    @Override
     public void start() throws Exception {
         LOGGER.debug("warming up docker");
         final ProcessInfo processInfo = commandExecutor.executeSync("warmup", DockerCommands.generateUUID(),
@@ -152,10 +154,6 @@ public class DockerWarmuper implements Managed, DockerCommands, MetadataHolder {
         }
     }
 
-    @Override
-    public void stop() throws Exception {
-        //do nothing
-    }
 
     @Override
     public String getResourceType() {
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/AsyncFileHandler.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/AsyncFileHandler.java
index e2fe9c2..503f853 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/AsyncFileHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/AsyncFileHandler.java
@@ -20,7 +20,8 @@
 package com.epam.datalab.backendapi.core.response.folderlistener;
 
 import com.epam.datalab.backendapi.core.FileHandlerCallback;
-import io.dropwizard.util.Duration;
+//import io.dropwizard.util.Duration;
+import java.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -127,7 +128,7 @@ public final class AsyncFileHandler implements Supplier<Boolean> {
         long after = file.length();
         do {
             before = after;
-            Thread.sleep(fileLengthCheckDelay.toMilliseconds());
+            Thread.sleep(fileLengthCheckDelay.toMillis());
             after = file.length();
         } while (before != after);
     }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/FolderListenerExecutor.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/FolderListenerExecutor.java
index 7462b80..fa85d84 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/FolderListenerExecutor.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/FolderListenerExecutor.java
@@ -24,18 +24,24 @@ import com.epam.datalab.backendapi.core.FileHandlerCallback;
 import com.epam.datalab.backendapi.core.response.handlers.dao.CallbackHandlerDao;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
-import io.dropwizard.util.Duration;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+//import io.dropwizard.util.Duration;
+import java.time.Duration;
 
 import static com.epam.datalab.backendapi.core.response.folderlistener.FolderListener.listen;
 
 /**
  * Starts asynchronously of waiting for file creation and processing this file.
  */
-@Singleton
+@Component
+@Scope("singleton")
 public class FolderListenerExecutor {
-    @Inject
+    @Autowired
     private ProvisioningServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     private CallbackHandlerDao handlerDao;
 
     /**
@@ -49,7 +55,7 @@ public class FolderListenerExecutor {
      */
     public void start(String directory, Duration timeout, FileHandlerCallback fileHandlerCallback) {
         CallbackHandlerDao dao = configuration.isHandlersPersistenceEnabled() ? handlerDao : null;
-        listen(directory, fileHandlerCallback, timeout.toMilliseconds(),
-                configuration.getFileLengthCheckDelay().toMilliseconds(), dao);
+        listen(directory, fileHandlerCallback, timeout.toMillis(),
+                configuration.getFileLengthCheckDelay().toMillis(), dao);
     }
 }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemList.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemList.java
index 76418ae..d8b1a32 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemList.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemList.java
@@ -24,7 +24,8 @@ import com.epam.datalab.backendapi.core.commands.DockerCommands;
 import com.epam.datalab.backendapi.core.response.folderlistener.WatchItem.ItemStatus;
 import com.epam.datalab.backendapi.core.response.handlers.PersistentFileHandler;
 import com.epam.datalab.backendapi.core.response.handlers.dao.CallbackHandlerDao;
-import io.dropwizard.util.Duration;
+//import io.dropwizard.util.Duration;
+import java.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -230,7 +231,7 @@ public class WatchItemList {
         LOGGER.trace("Process file {} for folder {}", item.getFileName(), directoryFullName);
         item.setFuture(CompletableFuture.supplyAsync(
                 new AsyncFileHandler(item.getFileName(), getDirectoryName(),
-                        item.getFileHandlerCallback(), Duration.milliseconds(item.getFileLengthCheckDelay()))));
+                        item.getFileHandlerCallback(), Duration.ofMillis(item.getFileLengthCheckDelay()))));
     }
 
     /**
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalConfigure.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalConfigure.java
index 3cdfcf2..c90a4b2 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalConfigure.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalConfigure.java
@@ -38,23 +38,26 @@ import com.epam.datalab.rest.client.RESTService;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
 
 import java.util.Objects;
 
 import static com.epam.datalab.backendapi.core.commands.DockerAction.CONFIGURE;
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class ComputationalConfigure implements DockerCommands {
-    @Inject
+    @Autowired
     private ProvisioningServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     private FolderListenerExecutor folderListenerExecutor;
-    @Inject
+    @Autowired
     private ICommandExecutor commandExecutor;
-    @Inject
+    @Autowired
     private CommandBuilder commandBuilder;
-    @Inject
+    @Autowired
     private RESTService selfService;
 
     public String configure(String uuid, ComputationalBase<?> dto) {
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/dao/FileSystemCallbackHandlerDao.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/dao/FileSystemCallbackHandlerDao.java
index 6e39555..8346554 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/dao/FileSystemCallbackHandlerDao.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/dao/FileSystemCallbackHandlerDao.java
@@ -24,9 +24,13 @@ import com.epam.datalab.backendapi.core.response.handlers.PersistentFileHandler;
 import com.epam.datalab.exceptions.DatalabException;
 import com.epam.datalab.util.FileUtils;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
+//import com.google.inject.Inject;
+//import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
 
 import java.io.File;
 import java.io.IOException;
@@ -41,13 +45,15 @@ import java.util.stream.Stream;
 
 import static java.util.stream.Collectors.toList;
 
-@Singleton
+
+@Scope("singleton")
 @Slf4j
+@Component
 public class FileSystemCallbackHandlerDao implements CallbackHandlerDao {
 
-    @Inject
+    @Autowired
     private ProvisioningServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     private ObjectMapper mapper;
 
     @Override
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/AwsProvisioningModule.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/AwsProvisioningModule.java
index bced6b7..f9eee86 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/AwsProvisioningModule.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/AwsProvisioningModule.java
@@ -23,17 +23,21 @@ import com.epam.datalab.backendapi.resources.aws.ComputationalResourceAws;
 import com.epam.datalab.backendapi.resources.aws.EdgeResourceAws;
 import com.epam.datalab.backendapi.resources.aws.ExploratoryResourceAws;
 import com.epam.datalab.backendapi.resources.aws.InfrastructureResourceAws;
-import com.epam.datalab.cloud.CloudModule;
-import com.google.inject.Injector;
-import io.dropwizard.setup.Environment;
+//import com.epam.datalab.cloud.CloudModule;
+//import com.google.inject.Injector;
+//import io.dropwizard.setup.Environment;
+//import org.springframework.core.env.Environment;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.springframework.stereotype.Component;
 
-public class AwsProvisioningModule extends CloudModule {
 
-    @Override
-    public void init(Environment environment, Injector injector) {
-        environment.jersey().register(injector.getInstance(EdgeResourceAws.class));
-        environment.jersey().register(injector.getInstance(InfrastructureResourceAws.class));
-        environment.jersey().register(injector.getInstance(ExploratoryResourceAws.class));
-        environment.jersey().register(injector.getInstance(ComputationalResourceAws.class));
+public class AwsProvisioningModule extends ResourceConfig {
+
+    public AwsProvisioningModule() {
+        register(EdgeResourceAws.class);
+        register(InfrastructureResourceAws.class);
+        register(ExploratoryResourceAws.class);
+        register(ComputationalResourceAws.class);
     }
+
 }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/CloudModuleConfigurator.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/CloudModuleConfigurator.java
index ba1595b..68aed49 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/CloudModuleConfigurator.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/modules/CloudModuleConfigurator.java
@@ -29,8 +29,8 @@ public class CloudModuleConfigurator {
 
     public static CloudModule getCloudModule(ProvisioningServiceApplicationConfiguration configuration) {
         switch (configuration.getCloudProvider()) {
-            case AWS:
-                return new AwsProvisioningModule();
+//            case AWS:
+//                return new AwsProvisioningModule();
             case AZURE:
                 return new AzureProvisioningModule();
             case GCP:
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java
index 4b0cce7..b9034f5 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/BackupResource.java
@@ -32,6 +32,7 @@ import com.epam.datalab.rest.contracts.BackupAPI;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -46,13 +47,13 @@ import javax.ws.rs.core.Response;
 @Slf4j
 public class BackupResource {
 
-    @Inject
+    @Autowired
     private ProvisioningServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     protected FolderListenerExecutor folderListenerExecutor;
-    @Inject
+    @Autowired
     protected ICommandExecutor commandExecutor;
-    @Inject
+    @Autowired
     protected RESTService selfService;
 
 
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/ProvisioningHealthCheckResource.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/ProvisioningHealthCheckResource.java
index 0693c09..959303d 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/ProvisioningHealthCheckResource.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/ProvisioningHealthCheckResource.java
@@ -23,6 +23,7 @@ import com.epam.datalab.auth.UserInfo;
 import com.epam.datalab.backendapi.ProvisioningServiceApplicationConfiguration;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
@@ -33,7 +34,7 @@ import javax.ws.rs.core.Response;
 @Path("/healthcheck")
 @Produces(MediaType.APPLICATION_JSON)
 public class ProvisioningHealthCheckResource {
-    @Inject
+    @Autowired
     private ProvisioningServiceApplicationConfiguration configuration;
 
     @GET
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/aws/ComputationalResourceAws.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/aws/ComputationalResourceAws.java
index 9af68b3..de38a34 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/aws/ComputationalResourceAws.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/aws/ComputationalResourceAws.java
@@ -75,7 +75,8 @@ public class ComputationalResourceAws extends DockerService implements DockerCom
                 configuration.getResourceStatusPollTimeout(),
                 getFileHandlerCallback(CREATE, uuid, dto));
         try {
-            long timeout = configuration.getResourceStatusPollTimeout().toSeconds();
+            //TODO: verify the getSeconds method
+            long timeout = configuration.getResourceStatusPollTimeout().getSeconds();
             commandExecutor.executeAsync(
                     ui.getName(),
                     uuid,
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java
index 0ff68f0..ab79031 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ComputationalResourceGcp.java
@@ -43,6 +43,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -60,9 +61,9 @@ import static com.epam.datalab.backendapi.core.commands.DockerAction.TERMINATE;
 @Slf4j
 public class ComputationalResourceGcp extends DockerService implements DockerCommands {
 
-    @Inject
+    @Autowired
     private ComputationalConfigure computationalConfigure;
-    @Inject
+    @Autowired
     private SparkClusterService sparkClusterService;
 
     @POST
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/EdgeResourceGcp.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/EdgeResourceGcp.java
index 654f660..99bd973 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/EdgeResourceGcp.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/EdgeResourceGcp.java
@@ -32,6 +32,7 @@ import com.epam.datalab.util.FileUtils;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -51,10 +52,11 @@ import static com.epam.datalab.rest.contracts.ApiCallbacks.STATUS_URI;
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.APPLICATION_JSON)
 @Slf4j
+@Component
 public class EdgeResourceGcp extends EdgeService {
 
     public EdgeResourceGcp() {
-        log.info("{} is initialized", getClass().getSimpleName());
+        log.debug("{} is initialized", getClass().getSimpleName());
     }
 
     @POST
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ExploratoryResourceGcp.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ExploratoryResourceGcp.java
index c946ff7..dceb381 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ExploratoryResourceGcp.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/ExploratoryResourceGcp.java
@@ -29,6 +29,8 @@ import com.epam.datalab.dto.gcp.exploratory.ExploratoryCreateGcp;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.inject.Inject;
 import io.dropwizard.auth.Auth;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -41,7 +43,7 @@ import javax.ws.rs.core.MediaType;
 @Produces(MediaType.APPLICATION_JSON)
 public class ExploratoryResourceGcp {
 
-    @Inject
+    @Autowired
     private ExploratoryService exploratoryService;
 
 
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/InfrastructureResourceGcp.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/InfrastructureResourceGcp.java
index f15f63f..177eb9b 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/InfrastructureResourceGcp.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/resources/gcp/InfrastructureResourceGcp.java
@@ -25,6 +25,8 @@ import com.epam.datalab.backendapi.resources.base.InfrastructureService;
 import com.epam.datalab.dto.UserEnvironmentResources;
 import io.dropwizard.auth.Auth;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.POST;
@@ -36,6 +38,7 @@ import javax.ws.rs.core.MediaType;
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.APPLICATION_JSON)
 @Slf4j
+@Component
 public class InfrastructureResourceGcp extends InfrastructureService {
     public InfrastructureResourceGcp() {
         log.info("{} is initialized", getClass().getSimpleName());
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/CheckInactivityServiceImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/CheckInactivityServiceImpl.java
index 1d9aa16..133274c 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/CheckInactivityServiceImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/CheckInactivityServiceImpl.java
@@ -32,11 +32,12 @@ import com.epam.datalab.dto.exploratory.ExploratoryCheckInactivityAction;
 import com.epam.datalab.rest.contracts.ApiCallbacks;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Scope;
 
 import java.util.Objects;
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class CheckInactivityServiceImpl extends DockerService implements CheckInactivityService, DockerCommands {
 
 
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/DockerService.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/DockerService.java
index 4a08f69..254385e 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/DockerService.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/DockerService.java
@@ -25,18 +25,19 @@ import com.epam.datalab.backendapi.core.commands.ICommandExecutor;
 import com.epam.datalab.backendapi.core.response.folderlistener.FolderListenerExecutor;
 import com.epam.datalab.rest.client.RESTService;
 import com.google.inject.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public abstract class DockerService {
 
-    @Inject
+    @Autowired
     protected ProvisioningServiceApplicationConfiguration configuration;
-    @Inject
+    @Autowired
     protected FolderListenerExecutor folderListenerExecutor;
-    @Inject
+    @Autowired
     protected ICommandExecutor commandExecutor;
-    @Inject
+    @Autowired
     protected CommandBuilder commandBuilder;
-    @Inject
+    @Autowired
     protected RESTService selfService;
 
 }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/KeyService.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/KeyService.java
index 443d6a4..3fc380a 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/KeyService.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/KeyService.java
@@ -33,6 +33,8 @@ import com.epam.datalab.rest.contracts.ApiCallbacks;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.io.IOException;
 
@@ -41,14 +43,14 @@ import static java.nio.file.Files.readAllBytes;
 import static java.nio.file.Paths.get;
 
 @Slf4j
-@Singleton
+@Scope("singleton")
 public class KeyService extends DockerService implements DockerCommands {
 
     private static final String REUPLOAD_KEY_ACTION = "reupload_key";
 
     private final ProvisioningServiceApplicationConfiguration conf;
 
-    @Inject
+    @Autowired
     public KeyService(ProvisioningServiceApplicationConfiguration conf) {
         this.conf = conf;
     }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java
index 6be8ece..35f7baa 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/OdahuServiceImpl.java
@@ -35,6 +35,7 @@ import com.epam.datalab.dto.odahu.CreateOdahuDTO;
 import com.epam.datalab.rest.client.RESTService;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.inject.Inject;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class OdahuServiceImpl implements OdahuService {
 
@@ -48,7 +49,7 @@ public class OdahuServiceImpl implements OdahuService {
     private final ICommandExecutor commandExecutor;
     private final RESTService selfService;
 
-    @Inject
+    @Autowired
     public OdahuServiceImpl(ProvisioningServiceApplicationConfiguration configuration,
                             FolderListenerExecutor folderListenerExecutor, CommandBuilder commandBuilder,
                             ICommandExecutor commandExecutor, RESTService selfService) {
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
index f92e1f4..1e3140c 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/ProjectServiceImpl.java
@@ -36,6 +36,9 @@ import com.epam.datalab.rest.client.RESTService;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
 
 import java.util.Objects;
 
@@ -53,7 +56,7 @@ public class ProjectServiceImpl implements ProjectService {
     private final ICommandExecutor commandExecutor;
     private final CommandBuilder commandBuilder;
 
-    @Inject
+    @Autowired
     public ProjectServiceImpl(RESTService selfService, ProvisioningServiceApplicationConfiguration configuration,
                               FolderListenerExecutor folderListenerExecutor, ICommandExecutor commandExecutor, CommandBuilder commandBuilder) {
         this.selfService = selfService;
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/RestoreCallbackHandlerServiceImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/RestoreCallbackHandlerServiceImpl.java
index 4e21d0d..bd3ef49 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/RestoreCallbackHandlerServiceImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/RestoreCallbackHandlerServiceImpl.java
@@ -24,25 +24,26 @@ import com.epam.datalab.backendapi.core.response.handlers.dao.CallbackHandlerDao
 import com.epam.datalab.backendapi.service.RestoreCallbackHandlerService;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
-import io.dropwizard.lifecycle.Managed;
-import io.dropwizard.util.Duration;
+//TODO: remove the lifecycle dependency
+//import io.dropwizard.lifecycle.Managed;
+//import io.dropwizard.util.Duration;
+import java.time.Duration;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 @Singleton
 @Slf4j
-public class RestoreCallbackHandlerServiceImpl implements Managed, RestoreCallbackHandlerService {
+@Service
+public class RestoreCallbackHandlerServiceImpl implements RestoreCallbackHandlerService {
 
-    @Inject
+    @Autowired
     private CallbackHandlerDao callbackHandlerDao;
-    @Inject
+    @Autowired
     private FolderListenerExecutor folderListenerExecutor;
 
-    @Override
-    public void start() {
-        restore();
-    }
+    public void start() {restore();}
 
-    @Override
     public void stop() {
         log.info("RestoreCallbackHandlerServiceImpl stopped");
     }
@@ -51,7 +52,7 @@ public class RestoreCallbackHandlerServiceImpl implements Managed, RestoreCallba
         log.info("Restoring callback handlers");
         callbackHandlerDao.findAll().forEach(persistentFileHandler ->
                 folderListenerExecutor.start(persistentFileHandler.getDirectory(),
-                        Duration.milliseconds(persistentFileHandler.getTimeout()),
+                        Duration.ofMillis(persistentFileHandler.getTimeout()),
                         persistentFileHandler.getHandler()));
         log.info("Successfully restored file handlers");
     }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/SparkClusterService.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/SparkClusterService.java
index 62ae5b1..4ef2dc9 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/SparkClusterService.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/SparkClusterService.java
@@ -38,6 +38,8 @@ import com.epam.datalab.exceptions.DatalabException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
 
 import java.util.Objects;
 
@@ -47,12 +49,12 @@ import static com.epam.datalab.backendapi.core.commands.DockerAction.START;
 import static com.epam.datalab.backendapi.core.commands.DockerAction.STOP;
 import static com.epam.datalab.backendapi.core.commands.DockerAction.TERMINATE;
 
-@Singleton
+@Scope("singleton")
 public class SparkClusterService extends DockerService implements DockerCommands {
 
     private static final DataEngineType SPARK_ENGINE = DataEngineType.SPARK_STANDALONE;
 
-    @Inject
+    @Autowired
     private ComputationalConfigure computationalConfigure;
 
     public String create(UserInfo ui, ComputationalBase<?> dto) {
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/aws/BucketServiceAwsImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/aws/BucketServiceAwsImpl.java
index 2999df9..8cfdba9 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/aws/BucketServiceAwsImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/aws/BucketServiceAwsImpl.java
@@ -24,6 +24,7 @@ import com.epam.datalab.backendapi.service.BucketService;
 import com.epam.datalab.dto.bucket.BucketDTO;
 import com.epam.datalab.exceptions.DatalabException;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 import software.amazon.awssdk.core.sync.RequestBody;
 import software.amazon.awssdk.core.sync.ResponseTransformer;
 import software.amazon.awssdk.services.s3.S3Client;
@@ -42,6 +43,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 @Slf4j
+@Component
 public class BucketServiceAwsImpl implements BucketService {
 
     @Override
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/azure/BucketServiceAzureImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/azure/BucketServiceAzureImpl.java
index 4c56b2c..6b930ea 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/azure/BucketServiceAzureImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/azure/BucketServiceAzureImpl.java
@@ -37,6 +37,9 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.ToString;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
@@ -53,7 +56,7 @@ public class BucketServiceAzureImpl implements BucketService {
 
     private final AzureAuthFile azureAuthFile;
 
-    @Inject
+    @Autowired
     public BucketServiceAzureImpl(ProvisioningServiceApplicationConfiguration configuration) throws Exception {
         azureAuthFile = getAzureAuthFile(configuration);
     }
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/gcp/BucketServiceGcpImpl.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/gcp/BucketServiceGcpImpl.java
index 65e9fe6..dd732b4 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/gcp/BucketServiceGcpImpl.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/service/impl/gcp/BucketServiceGcpImpl.java
@@ -30,6 +30,7 @@ import com.google.cloud.storage.Bucket;
 import com.google.cloud.storage.Storage;
 import com.google.cloud.storage.StorageOptions;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
 @Slf4j
+@Component
 public class BucketServiceGcpImpl implements BucketService {
 
     @Override
diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/process/model/DatalabProcess.java b/services/provisioning-service/src/main/java/com/epam/datalab/process/model/DatalabProcess.java
index 9722ab6..0acc927 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/process/model/DatalabProcess.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/process/model/DatalabProcess.java
@@ -21,7 +21,8 @@ package com.epam.datalab.process.model;
 import com.epam.datalab.process.ProcessConveyor;
 import com.epam.datalab.process.builder.ProcessInfoBuilder;
 import com.epam.datalab.util.SecurityUtils;
-import io.dropwizard.util.Duration;
+import java.time.Duration;
+//import io.dropwizard.util.Duration;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.PrintWriter;
@@ -161,7 +162,7 @@ public class DatalabProcess {
     }
 
     public void setProcessTimeout(Duration duration) {
-        this.expirationTime = duration.toMilliseconds();
+        this.expirationTime = duration.toMillis();
     }
 
 }
diff --git a/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/DockerWarmuperTest.java b/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/DockerWarmuperTest.java
index 191da79..c640fd0 100644
--- a/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/DockerWarmuperTest.java
+++ b/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/DockerWarmuperTest.java
@@ -33,7 +33,8 @@ import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
-import io.dropwizard.util.Duration;
+import java.time.Duration;
+//import io.dropwizard.util.Duration;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -115,7 +116,7 @@ public class DockerWarmuperTest {
     private ProvisioningServiceApplicationConfiguration createConfiguration() {
         ProvisioningServiceApplicationConfiguration result = mock(ProvisioningServiceApplicationConfiguration.class);
         when(result.getWarmupDirectory()).thenReturn("/tmp");
-        when(result.getWarmupPollTimeout()).thenReturn(Duration.seconds(3));
+        when(result.getWarmupPollTimeout()).thenReturn(Duration.ofMillis(3));
         return result;
     }
 
diff --git a/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemTest.java b/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemTest.java
index 075523d..25ec2f5 100644
--- a/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemTest.java
+++ b/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/core/response/folderlistener/WatchItemTest.java
@@ -21,7 +21,8 @@ package com.epam.datalab.backendapi.core.response.folderlistener;
 
 import com.epam.datalab.backendapi.core.FileHandlerCallback;
 import com.epam.datalab.backendapi.core.response.folderlistener.WatchItem.ItemStatus;
-import io.dropwizard.util.Duration;
+import java.time.Duration;
+//import io.dropwizard.util.Duration;
 import org.junit.Test;
 
 import java.util.concurrent.CompletableFuture;
@@ -87,7 +88,7 @@ public class WatchItemTest {
 
     private AsyncFileHandler getSupplier(WatchItem item) {
         return new AsyncFileHandler(item.getFileName(), getDirectory(), item.getFileHandlerCallback(),
-                Duration.milliseconds(item.getFileLengthCheckDelay()));
+                Duration.ofMillis(item.getFileLengthCheckDelay()));
     }
 
     @Test
diff --git a/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/service/RestoreCallbackHandlerServiceImplTest.java b/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/service/RestoreCallbackHandlerServiceImplTest.java
index 1df6778..6c0a5f7 100644
--- a/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/service/RestoreCallbackHandlerServiceImplTest.java
+++ b/services/provisioning-service/src/test/java/com/epam/datalab/backendapi/service/RestoreCallbackHandlerServiceImplTest.java
@@ -23,7 +23,8 @@ import com.epam.datalab.backendapi.core.response.folderlistener.FolderListenerEx
 import com.epam.datalab.backendapi.core.response.handlers.PersistentFileHandler;
 import com.epam.datalab.backendapi.core.response.handlers.dao.CallbackHandlerDao;
 import com.epam.datalab.backendapi.service.impl.RestoreCallbackHandlerServiceImpl;
-import io.dropwizard.util.Duration;
+import java.time.Duration;
+//import io.dropwizard.util.Duration;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
@@ -56,9 +57,9 @@ public class RestoreCallbackHandlerServiceImplTest {
         restoreCallbackHandlerService.start();
 
         verify(dao).findAll();
-        verify(folderListenerExecutor).start(handler1.getDirectory(), Duration.milliseconds(handler1.getTimeout()),
+        verify(folderListenerExecutor).start(handler1.getDirectory(), Duration.ofMillis(handler1.getTimeout()),
                 handler1.getHandler());
-        verify(folderListenerExecutor).start(handler2.getDirectory(), Duration.milliseconds(handler2.getTimeout()),
+        verify(folderListenerExecutor).start(handler2.getDirectory(), Duration.ofMillis(handler2.getTimeout()),
                 handler2.getHandler());
         verifyNoMoreInteractions(dao, folderListenerExecutor);
     }
diff --git a/services/self-service/self-service.yml b/services/self-service/self-service.yml
index 9e20bf0..b8b1ed2 100644
--- a/services/self-service/self-service.yml
+++ b/services/self-service/self-service.yml
@@ -19,7 +19,7 @@
 #
 # ******************************************************************************
 
-<#include "ssn.yml">
+<#include "infrastructure-provisioning/src/ssn/templates/ssn.yml">
 
 # Minimum and maximum number of slave EMR instances than could be created
 minEmrInstanceCount: 2
@@ -46,15 +46,15 @@ checkEnvStatusTimeout: 5m
 # Restrict access to DataLab features using roles policy
 rolePolicyEnabled: true
 # Default access to DataLab features using roles policy
-roleDefaultAccess: false
+roleDefaultAccess: true
 
 # Set to true to enable the scheduler of billing report.
-billingSchedulerEnabled: false
+billingSchedulerEnabled: true
 billingPort: 8088
 # Set to true to enable audit
 auditEnabled: true
 # Name of configuration file for billing report.
-  <#if DEV_MODE == "true">
+<#if DEV_MODE == "true">
 billingConfFile: ${sys['user.dir']}/../billing/billing.yml
 <#else>
 billingConfFile: ${DATALAB_CONF_DIR}/billing.yml
@@ -146,13 +146,13 @@ schedulers:
     cron: "*/20 * * ? * * *"
   checkQuoteScheduler:
     enabled: true
-    cron: "0 2/15 * ? * *"
+    cron: "0 0 * ? * * *"
   checkUserQuoteScheduler:
     enabled: false
     cron: "0 0 * ? * * *"
   checkProjectQuoteScheduler:
     enabled: true
-    cron: "0 4/15 * ? * *"
+    cron: "0 * * ? * * *"
   checkEndpointStatusScheduler:
     enabled: true
     cron: "0 6/15 * ? * *"
@@ -168,16 +168,16 @@ guacamole:
   username: datalab-user
 
 keycloakConfiguration:
-  redirectUri: KEYCLOAK_REDIRECT_URI
-  realm: KEYCLOAK_REALM_NAME
+  redirectUri: https://localhost:8443/
+  realm: DLAB_bhliva
   bearer-only: true
-  auth-server-url: KEYCLOAK_AUTH_SERVER_URL
+  auth-server-url: http://52.11.45.11:8080/auth
   ssl-required: none
   register-node-at-startup: true
   register-node-period: 600
-  resource: KEYCLOAK_CLIENT_NAME
+  resource: sss
   credentials:
-    secret: KEYCLOAK_CLIENT_SECRET
+    secret: cf5a484b-039b-4161-8707-ad65c0f25962
 
 jerseyClient:
   minThreads: 1

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org