You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by yk...@apache.org on 2021/07/07 12:37:53 UTC

[incubator-datalab] branch DATATALAB-2504 created (now e213ed4)

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

ykinash pushed a change to branch DATATALAB-2504
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git.


      at e213ed4  [DATALAB-2504] -- fixed problem with wrong write on config page

This branch includes the following new commits:

     new 0ececb2  [DATALAB] -- added test logs
     new aa64841  Merge remote-tracking branch 'origin/develop' into develop
     new e213ed4  [DATALAB-2504] -- fixed problem with wrong write on config page

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


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


[incubator-datalab] 03/03: [DATALAB-2504] -- fixed problem with wrong write on config page

Posted by yk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ykinash pushed a commit to branch DATATALAB-2504
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit e213ed49d94855470719ddb5db870385078daffc
Author: KinashYurii <ur...@gmail.com>
AuthorDate: Wed Jul 7 15:37:20 2021 +0300

    [DATALAB-2504] -- fixed problem with wrong write on config page
---
 .../datalab/properties/ChangePropertiesConst.java  |  12 +--
 .../properties/ChangePropertiesService.java        | 100 ++++++++++++++-------
 2 files changed, 76 insertions(+), 36 deletions(-)

diff --git a/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesConst.java b/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesConst.java
index 2cfc997..1fa021c 100644
--- a/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesConst.java
+++ b/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesConst.java
@@ -23,17 +23,17 @@ public interface ChangePropertiesConst {
     String GKE_SELF_SERVICE_PATH = "/root/self-service.yaml";
     String GKE_SELF_SERVICE = "self-service.yaml";
     String SELF_SERVICE = "self-service.yml";
-    //    String SELF_SERVICE_PROP_PATH = "services/self-service/self-service.yml";
-    String SELF_SERVICE_PROP_PATH = "/opt/datalab/conf/self-service.yml";
+        String SELF_SERVICE_PROP_PATH = "services/self-service/self-service.yml";
+//    String SELF_SERVICE_PROP_PATH = "/opt/datalab/conf/self-service.yml";
     String PROVISIONING_SERVICE = "provisioning.yml";
-    //    String PROVISIONING_SERVICE_PROP_PATH = "services/provisioning-service/provisioning.yml";
-    String PROVISIONING_SERVICE_PROP_PATH = "/opt/datalab/conf/provisioning.yml";
+        String PROVISIONING_SERVICE_PROP_PATH = "services/provisioning-service/provisioning.yml";
+//    String PROVISIONING_SERVICE_PROP_PATH = "/opt/datalab/conf/provisioning.yml";
 
     String BILLING_SERVICE = "billing.yml";
+    //    String BILLING_SERVICE_PROP_PATH = "/opt/datalab/conf/billing.yml";
     //    String BILLING_SERVICE_PROP_PATH = "services/billing-gcp/billing.yml";
     //      String BILLING_SERVICE_PROP_PATH = "services/billing-azure/billing.yml";
-//    String BILLING_SERVICE_PROP_PATH = "services/billing-aws/billing.yml";
-    String BILLING_SERVICE_PROP_PATH = "/opt/datalab/conf/billing.yml";
+    String BILLING_SERVICE_PROP_PATH = "services/billing-aws/billing.yml";
     String GKE_BILLING_PATH = "/root/billing.yaml";
     String GKE_BILLING_SERVICE = "billing.yml";
     String RESTART_URL = "config/restart";
diff --git a/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesService.java b/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesService.java
index e4944a5..80b000a 100644
--- a/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesService.java
+++ b/services/datalab-webapp-common/src/main/java/com/epam/datalab/properties/ChangePropertiesService.java
@@ -49,21 +49,39 @@ public class ChangePropertiesService {
         }
     }
 
+
     public void writeFileFromString(String newPropFile, String serviceName, String servicePath) {
+        String oldFile = readFile(serviceName, servicePath);
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(servicePath))) {
+            try {
+                //            changeCHMODE(serviceName, servicePath, ChangePropertiesConst.DEFAULT_CHMOD, ChangePropertiesConst.WRITE_CHMOD);
+                log.info("Trying to overwrite {}, file for path {} :", serviceName, servicePath);
+                writer.write(addLicence());
+                writer.write(checkAndReplaceSecretIfEmpty(newPropFile, oldFile));
+                log.info("{} overwritten successfully", serviceName);
+                writer.close();
+                //            changeCHMODE(serviceName, servicePath, ChangePropertiesConst.WRITE_CHMOD, ChangePropertiesConst.DEFAULT_CHMOD);
+            } catch (Exception e) {
+                log.error("Failed during overwriting {}", serviceName);
+                writer.write(oldFile);
+                throw new DynamicChangePropertiesException(String.format("Failed during overwriting %s", serviceName));
+            }
+        } catch (IOException e) {
+            log.error("Failed to create writer with path {}", servicePath);
+            throw new DynamicChangePropertiesException(String.format("Failed during overwriting %s", serviceName));
+        }
+    }
+
+    private String readFile(String serviceName, String servicePath) {
+        String oldFile;
         try {
-            String oldFile = FileUtils.readFileToString(new File(servicePath), Charset.defaultCharset());
-            changeCHMODE(serviceName, servicePath, ChangePropertiesConst.DEFAULT_CHMOD, ChangePropertiesConst.WRITE_CHMOD);
-            BufferedWriter writer = new BufferedWriter(new FileWriter(servicePath));
-            log.info("Trying to overwrite {}, file for path {} :", serviceName, servicePath);
-            writer.write(addLicence());
-            writer.write(checkAndReplaceSecretIfEmpty(newPropFile, oldFile));
-            log.info("{} overwritten successfully", serviceName);
-            writer.close();
-            changeCHMODE(serviceName, servicePath, ChangePropertiesConst.WRITE_CHMOD, ChangePropertiesConst.DEFAULT_CHMOD);
+            oldFile = FileUtils.readFileToString(new File(servicePath), Charset.defaultCharset());
         } catch (IOException e) {
-            log.error("Failed during overwriting {}", serviceName);
+            log.error("Failed to read with path {}", servicePath);
             throw new DynamicChangePropertiesException(String.format("Failed during overwriting %s", serviceName));
+
         }
+        return oldFile;
     }
 
     public RestartAnswer restart(RestartForm restartForm) {
@@ -94,24 +112,30 @@ public class ChangePropertiesService {
     private String hideSecretsAndRemoveLicence(String currentConf) {
         Matcher passMatcher = Pattern.compile(ChangePropertiesConst.SECRET_REGEX).matcher(currentConf);
         Matcher userMatcher = Pattern.compile(ChangePropertiesConst.USER_REGEX).matcher(currentConf);
-        List<String> secrets = new ArrayList<>();
-        List<String> users = new ArrayList<>();
+        List<String> secretsAndUsers = new ArrayList<>();
         String confWithReplacedSecretConf = removeLicence(currentConf);
         while (passMatcher.find()) {
             String secret = passMatcher.group().split(":")[ChangePropertiesConst.DEFAULT_VALUE_PLACE];
             if (!(secret.isEmpty() || secret.trim().isEmpty()))
-                secrets.add(secret);
+                secretsAndUsers.add(secret);
         }
         while (userMatcher.find()) {
             String user = userMatcher.group().split(":")[ChangePropertiesConst.DEFAULT_VALUE_PLACE];
             if (!(user.isEmpty() || user.trim().isEmpty()))
-                users.add(user);
+                secretsAndUsers.add(user);
         }
-        for (String secret : secrets) {
-            confWithReplacedSecretConf = confWithReplacedSecretConf.replace(secret, ChangePropertiesConst.SECRET_REPLACEMENT_FORMAT);
-        }
-        for (String user : users) {
-            confWithReplacedSecretConf = confWithReplacedSecretConf.replace(user, ChangePropertiesConst.SECRET_REPLACEMENT_FORMAT);
+        for (String secretOrUser : secretsAndUsers) {
+            int start = confWithReplacedSecretConf.indexOf(secretOrUser);
+            int end = confWithReplacedSecretConf.indexOf(":", start);
+            boolean isTure;
+            try {
+                String s = confWithReplacedSecretConf.substring(start, end);
+                isTure = s.equals(secretOrUser);
+            } catch (StringIndexOutOfBoundsException e) {
+                isTure = true;
+            }
+            if (isTure)
+                confWithReplacedSecretConf = confWithReplacedSecretConf.replace(secretOrUser, ChangePropertiesConst.SECRET_REPLACEMENT_FORMAT);
         }
         return confWithReplacedSecretConf;
     }
@@ -137,29 +161,45 @@ public class ChangePropertiesService {
     }
 
     private String checkAndReplaceSecretIfEmpty(String newPropFile, String oldProf) {
-        Map<String, String> emptySecrets = findEmptySecret(newPropFile);
-        return emptySecrets.isEmpty() ? newPropFile : replaceEmptySecret(newPropFile, oldProf, emptySecrets);
+        Map<String, String> emptySecretsAndUserNames = findEmptySecretAndNames(newPropFile);
+        return emptySecretsAndUserNames.isEmpty() ? newPropFile : replaceEmptySecret(newPropFile, oldProf, emptySecretsAndUserNames);
     }
 
     private String replaceEmptySecret(String newPropFile, String oldProf, Map<String, String> emptySecrets) {
         String fileWithReplacedEmptySecrets = newPropFile;
-        Matcher oldProfMatcher = Pattern.compile(ChangePropertiesConst.SECRET_REGEX).matcher(oldProf);
-        while (oldProfMatcher.find()) {
-            String[] s = oldProfMatcher.group().split(":");
+        Matcher oldPassMatcher = Pattern.compile(ChangePropertiesConst.SECRET_REGEX).matcher(oldProf);
+        Matcher oldUserMatcher = Pattern.compile(ChangePropertiesConst.USER_REGEX).matcher(oldProf);
+
+        while (oldPassMatcher.find()) {
+            String[] s = oldPassMatcher.group().split(":");
             if (emptySecrets.containsKey(s[ChangePropertiesConst.DEFAULT_NAME_PLACE])) {
-                fileWithReplacedEmptySecrets = fileWithReplacedEmptySecrets.replace(emptySecrets.get(s[ChangePropertiesConst.DEFAULT_NAME_PLACE]), oldProfMatcher.group());
+                fileWithReplacedEmptySecrets = fileWithReplacedEmptySecrets.replace(emptySecrets.get(s[ChangePropertiesConst.DEFAULT_NAME_PLACE]), oldPassMatcher.group());
+            }
+        }
+        while (oldUserMatcher.find()) {
+            String[] s = oldUserMatcher.group().split(":");
+            if (emptySecrets.containsKey(s[ChangePropertiesConst.DEFAULT_NAME_PLACE])) {
+                fileWithReplacedEmptySecrets = fileWithReplacedEmptySecrets.replace(emptySecrets.get(s[ChangePropertiesConst.DEFAULT_NAME_PLACE]), oldUserMatcher.group());
             }
         }
         return fileWithReplacedEmptySecrets;
     }
 
-    private Map<String, String> findEmptySecret(String newPropFile) {
-        Matcher newPropFileMatcher = Pattern.compile(ChangePropertiesConst.SECRET_REGEX).matcher(newPropFile);
+    private Map<String, String> findEmptySecretAndNames(String newPropFile) {
+        Matcher passMatcher = Pattern.compile(ChangePropertiesConst.SECRET_REGEX).matcher(newPropFile);
+        Matcher userNameMatcher = Pattern.compile(ChangePropertiesConst.USER_REGEX).matcher(newPropFile);
         Map<String, String> emptySecrets = new HashMap<>();
-        while (newPropFileMatcher.find()) {
-            String[] s = newPropFileMatcher.group().split(":");
+        while (passMatcher.find()) {
+            String[] s = passMatcher.group().split(":");
+            if (s[ChangePropertiesConst.DEFAULT_VALUE_PLACE].equals(ChangePropertiesConst.SECRET_REPLACEMENT_FORMAT)) {
+                emptySecrets.put(s[ChangePropertiesConst.DEFAULT_NAME_PLACE], passMatcher.group());
+            }
+        }
+
+        while (userNameMatcher.find()) {
+            String[] s = userNameMatcher.group().split(":");
             if (s[ChangePropertiesConst.DEFAULT_VALUE_PLACE].equals(ChangePropertiesConst.SECRET_REPLACEMENT_FORMAT)) {
-                emptySecrets.put(s[ChangePropertiesConst.DEFAULT_NAME_PLACE], newPropFileMatcher.group());
+                emptySecrets.put(s[ChangePropertiesConst.DEFAULT_NAME_PLACE], userNameMatcher.group());
             }
         }
         return emptySecrets;

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


[incubator-datalab] 01/03: [DATALAB] -- added test logs

Posted by yk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ykinash pushed a commit to branch DATATALAB-2504
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit 0ececb2d8dfaa4ad6a73cf5bd2c1ce24330f6437
Author: KinashYurii <ur...@gmail.com>
AuthorDate: Wed Jul 7 12:25:16 2021 +0300

    [DATALAB] -- added test logs
---
 .../core/response/handlers/ComputationalCallbackHandler.java  |  4 ++++
 .../backendapi/resources/aws/ComputationalResourceAws.java    |  3 ++-
 .../backendapi/resources/callback/ComputationalCallback.java  | 11 +++++++++--
 .../backendapi/service/impl/ComputationalServiceImpl.java     |  4 ++++
 .../service/impl/InfrastructureInfoServiceImpl.java           |  5 +++++
 .../java/com/epam/datalab/backendapi/util/RequestBuilder.java |  6 ++++++
 6 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalCallbackHandler.java b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalCallbackHandler.java
index 7e0a549..99b5f0e 100644
--- a/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalCallbackHandler.java
+++ b/services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/handlers/ComputationalCallbackHandler.java
@@ -75,11 +75,15 @@ public class ComputationalCallbackHandler extends ResourceCallbackHandler<Comput
 
     @Override
     protected ComputationalStatusDTO parseOutResponse(JsonNode resultNode, ComputationalStatusDTO baseStatus) {
+        log.info("TEST LOG!!!: parseOutResponse :\n resultNode: {}", resultNode);
+
         if (resultNode == null) {
             return baseStatus;
         }
         baseStatus.withComputationalUrl(extractUrl(resultNode));
         baseStatus.withLastActivity(Date.from(Instant.now()));
+        log.info("TEST LOG!!!: base status: {}", baseStatus);
+        log.info("TEST LOG!!!: getAction: {}", getAction());
 
         if (DockerAction.CREATE == getAction()) {
             baseStatus
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 1818b29..9af68b3 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
@@ -68,7 +68,8 @@ public class ComputationalResourceAws extends DockerService implements DockerCom
     @POST
     @Path(ComputationalAPI.COMPUTATIONAL_CREATE_CLOUD_SPECIFIC)
     public String create(@Auth UserInfo ui, ComputationalCreateAws dto) {
-        log.debug("Create computational resources {} for user {}: {}", dto.getComputationalName(), ui.getName(), dto);
+
+        log.info("Create computational resources {} for user {}: {}", dto.getComputationalName(), ui.getName(), dto);
         String uuid = DockerCommands.generateUUID();
         folderListenerExecutor.start(configuration.getImagesDirectory(),
                 configuration.getResourceStatusPollTimeout(),
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java
index 5e074ae..cb7e1a7 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/resources/callback/ComputationalCallback.java
@@ -66,6 +66,8 @@ public class ComputationalCallback {
     @POST
     @Path(ApiCallbacks.STATUS_URI)
     public Response status(ComputationalStatusDTO dto) {
+        log.info("TEST LOG!!!: status: {}", dto);
+
         log.debug("Updating status for computational resource {} for user {}: {}",
                 dto.getComputationalName(), dto.getUser(), dto);
         String uuid = dto.getRequestId();
@@ -77,11 +79,16 @@ public class ComputationalCallback {
                         new DatalabException(String.format("Computational resource %s of exploratory environment %s of " +
                                         "project %s for user %s doesn't exist", dto.getComputationalName(),
                                 dto.getExploratoryName(), dto.getProject(), dto.getUser())));
-        log.debug("Current status for computational resource {} of exploratory environment {} for user {} is {}",
+
+        log.info("TEST LOG!!!: compResource: {}", compResource);
+
+        log.info("Current status for computational resource {} of exploratory environment {} for user {} is {}",
                 dto.getComputationalName(), dto.getExploratoryName(), dto.getUser(),
                 compResource.getStatus());
         try {
-            computationalDAO.updateComputationalFields(dto.withLastActivity(new Date()));
+            computationalDAO.updateComputationalFields(dto
+                    .withLastActivity(new Date()));
+//                    .withStatus(UserInstanceStatus.RUNNING));
         } catch (DatalabException e) {
             log.error("Could not update status for computational resource {} for user {} to {}: {}", dto, e);
             throw e;
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java
index d93298b..2da87a3 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/ComputationalServiceImpl.java
@@ -205,9 +205,13 @@ public class ComputationalServiceImpl implements ComputationalService {
         boolean isAdded = computationalDAO.addComputational(userInfo.getName(), formDTO.getNotebookName(), project,
                 computationalResource);
 
+        log.info("TEST LOG!!!: isAdded: {}", isAdded);
+
         if (isAdded) {
             try {
                 EndpointDTO endpointDTO = endpointService.get(instance.getEndpoint());
+                log.info("TEST LOG!!!: send to prov");
+
                 String uuid =
                         provisioningService.post(endpointDTO.getUrl() + COMPUTATIONAL_CREATE_CLOUD_SPECIFIC,
                                 userInfo.getAccessToken(),
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
index fe2f340..09d05b9 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/service/impl/InfrastructureInfoServiceImpl.java
@@ -130,6 +130,11 @@ public class InfrastructureInfoServiceImpl implements InfrastructureInfoService
     @Override
     public InfrastructureMetaInfoDTO getInfrastructureMetaInfo() {
         final String branch = Manifests.read("GIT-Branch");
+        log.info("TEST LOG!!!: Mainfests: {}, branch: {}", Manifests.DEFAULT, branch);
+        log.info("TEST LOG!!!: Git-Commit: {} ", Manifests.read("GIT-Commit"));
+        log.info("TEST LOG!!!: Datalab-Version: {}", Manifests.read("DataLab-Version"));
+        log.info("TEST LOG!!!: RELEASE_NOTES_FORMAT: {}", RELEASE_NOTES_FORMAT);
+
         return InfrastructureMetaInfoDTO.builder()
                 .branch(branch)
                 .commit(Manifests.read("GIT-Commit"))
diff --git a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
index 7362160..0dc1a2a 100644
--- a/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
+++ b/services/self-service/src/main/java/com/epam/datalab/backendapi/util/RequestBuilder.java
@@ -65,6 +65,7 @@ import com.epam.datalab.model.exploratory.Exploratory;
 import com.epam.datalab.util.UsernameUtils;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import lombok.extern.slf4j.Slf4j;
 
 import java.util.List;
 import java.util.Map;
@@ -73,6 +74,7 @@ import java.util.UUID;
 import static com.epam.datalab.cloud.CloudProvider.*;
 
 @Singleton
+@Slf4j
 public class RequestBuilder {
     private static final String UNSUPPORTED_CLOUD_PROVIDER_MESSAGE = "Unsupported cloud provider ";
     private static final String AZURE_REFRESH_TOKEN_KEY = "refresh_token";
@@ -335,6 +337,8 @@ public class RequestBuilder {
                                                                      UserInstanceDTO userInstance,
                                                                      ComputationalCreateFormDTO form,
                                                                      EndpointDTO endpointDTO) {
+        log.info("TEST LOG!!!: newComputationalCreate: \n form: {}", form);
+
         T computationalCreate;
         CloudProvider cloudProvider = endpointDTO.getCloudProvider();
         switch (cloudProvider) {
@@ -351,6 +355,8 @@ public class RequestBuilder {
                         .withVersion(awsForm.getVersion())
                         .withConfig((awsForm.getConfig()))
                         .withSharedImageEnabled(String.valueOf(projectDTO.isSharedImageEnabled()));
+                log.info("TEST LOG!!!: computationalCreate: {}", computationalCreate);
+
                 break;
             case GCP:
                 GcpComputationalCreateForm gcpForm = (GcpComputationalCreateForm) form;

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


[incubator-datalab] 02/03: Merge remote-tracking branch 'origin/develop' into develop

Posted by yk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ykinash pushed a commit to branch DATATALAB-2504
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit aa648412a3daa45ed1aa04b56ad70de5d6dfca8c
Merge: 0ececb2 ce4d242
Author: KinashYurii <ur...@gmail.com>
AuthorDate: Wed Jul 7 12:27:45 2021 +0300

    Merge remote-tracking branch 'origin/develop' into develop

 .../configuration/configuration.component.ts            | 12 ++++++------
 .../resources/webapp/src/app/core/util/helpUtils.ts     | 17 +++++++++++++++--
 .../computational-resource-create-dialog.component.html |  8 ++++----
 .../computational-resource-create-dialog.component.ts   |  4 +++-
 .../create-environment/create-environment.component.ts  | 14 +-------------
 .../resources-grid/resources-grid.component.html        |  2 +-
 6 files changed, 30 insertions(+), 27 deletions(-)

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