You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2020/04/28 12:53:57 UTC

[incubator-dlab] 05/06: Merge branch 'develop' into bucket-browser-gcp

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

ofuks pushed a commit to branch bucket-browser-gcp
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit dcf66f15fd3b625356a357e90a286ac40f9ac738
Merge: e84ca63 915a149
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Tue Apr 28 12:42:45 2020 +0300

    Merge branch 'develop' into bucket-browser-gcp
    
    # Conflicts:
    #	infrastructure-provisioning/src/ssn/templates/ssn.yml
    #	services/dlab-webapp-common/src/main/java/com/epam/dlab/ServiceConfiguration.java
    #	services/dlab-webapp-common/src/main/java/com/epam/dlab/constants/ServiceConsts.java
    #	services/dlab-webapp-common/src/main/java/com/epam/dlab/rest/client/RESTService.java
    #	services/self-service/src/main/java/com/epam/dlab/backendapi/modules/DevModule.java
    #	services/self-service/src/main/java/com/epam/dlab/backendapi/modules/ProductionModule.java
    #	services/self-service/src/main/resources/mongo/aws/mongo_roles.json
    #	services/self-service/src/main/resources/mongo/azure/mongo_roles.json
    #	services/self-service/src/main/resources/mongo/gcp/mongo_roles.json

 README.md                                          | 503 +++++++++++++--------
 USER_GUIDE.md                                      | 476 ++++++++++---------
 doc/billing_filter.png                             | Bin 18705 -> 41447 bytes
 doc/billing_page.png                               | Bin 18577 -> 264721 bytes
 doc/bin_icon.png                                   | Bin 0 -> 4379 bytes
 doc/computational_scheduler.png                    | Bin 33900 -> 35577 bytes
 doc/computational_scheduler_create.png             | Bin 3893 -> 3277 bytes
 doc/connect_endpoint.png                           | Bin 0 -> 202030 bytes
 doc/create_notebook_from_ami.png                   | Bin 27066 -> 35594 bytes
 doc/dataproc_create.png                            | Bin 0 -> 129369 bytes
 doc/delete_btn.png                                 | Bin 0 -> 4155 bytes
 doc/delete_group.png                               | Bin 34704 -> 45914 bytes
 doc/dlab_aws.png                                   | Bin 0 -> 96693 bytes
 doc/dlab_azure.png                                 | Bin 0 -> 94589 bytes
 doc/dlab_gcp.png                                   | Bin 0 -> 108227 bytes
 doc/emr_creating.png                               | Bin 37126 -> 43196 bytes
 doc/emr_terminate_confirm.png                      | Bin 1760535 -> 14257 bytes
 doc/endpoint_list.png                              | Bin 0 -> 181738 bytes
 doc/environment_management.png                     | Bin 66404 -> 90301 bytes
 doc/git_creds_window.png                           | Bin 7190623 -> 25654 bytes
 doc/git_creds_window2.png                          | Bin 5946035 -> 26511 bytes
 doc/main_page.png                                  | Bin 4746590 -> 35533 bytes
 doc/main_page2.png                                 | Bin 8157879 -> 49611 bytes
 doc/main_page3.png                                 | Bin 8157879 -> 48735 bytes
 doc/main_page_filter.png                           | Bin 62679 -> 79991 bytes
 doc/manage_env_confirm.png                         | Bin 10464 -> 14049 bytes
 doc/manage_environment.png                         | Bin 21334 -> 18263 bytes
 doc/manage_role.png                                | Bin 108456 -> 28068 bytes
 doc/managemanage_resource_actions.png              | Bin 4997 -> 4976 bytes
 doc/notebook_create.png                            | Bin 41323 -> 33033 bytes
 doc/notebook_info.png                              | Bin 157517 -> 42371 bytes
 doc/notebook_libs_status.png                       | Bin 50720 -> 59233 bytes
 doc/notebook_scheduler.png                         | Bin 36928 -> 39368 bytes
 doc/notebook_terminated.png                        | Bin 38113 -> 56038 bytes
 doc/notebook_terminating.png                       | Bin 39506 -> 56292 bytes
 doc/pen_icon.png                                   | Bin 0 -> 4171 bytes
 doc/project_menu.png                               | Bin 0 -> 86667 bytes
 doc/project_view.png                               | Bin 0 -> 234276 bytes
 doc/roles.png                                      | Bin 0 -> 198223 bytes
 doc/scheduler_by_inactivity.png                    | Bin 0 -> 22076 bytes
 doc/spark_stop_confirm.png                         | Bin 10920 -> 12767 bytes
 doc/upload_or_generate_user_key.png                | Bin 17078 -> 37302 bytes
 .../files/aws/deeplearning_description.json        |   4 +-
 .../files/azure/deeplearning_description.json      |   4 +-
 .../general/files/azure/tensor_description.json    |   4 +-
 .../files/gcp/deeplearning_description.json        |   4 +-
 .../src/general/lib/os/debian/ssn_lib.py           |  29 +-
 .../src/general/scripts/aws/ssn_configure.py       |  10 +-
 .../src/general/scripts/azure/ssn_configure.py     |  30 +-
 .../src/general/scripts/gcp/project_prepare.py     |   6 +-
 .../src/general/scripts/gcp/ssn_configure.py       |  11 +-
 .../src/ssn/scripts/configure_billing.py           | 125 +++--
 .../src/ssn/scripts/configure_ui.py                |   8 +-
 .../src/ssn/templates/ssn.yml                      |   5 +
 .../terraform/aws/endpoint/main/network.tf         |   7 +
 .../terraform/aws/endpoint/main/variables.tf       |  22 +-
 .../terraform/azure/endpoint/main/sg.tf            |  14 +
 .../terraform/azure/endpoint/main/variables.tf     |  20 +-
 .../terraform/bin/deploy/billing_app_aws.yml       |  34 ++
 .../terraform/bin/deploy/billing_aws.yml           |  35 +-
 .../terraform/bin/deploy/billing_azure.yml         |  59 +++
 .../terraform/bin/deploy/billing_gcp.yml           |  38 ++
 .../terraform/bin/deploy/endpoint_fab.py           | 339 +++++++++++++-
 .../bin/deploy/mongo_files/configure_mongo.py      |  95 ++++
 .../bin/deploy/mongo_files}/gcp/mongo_roles.json   | 100 ----
 .../deploy/mongo_files/mongod.service_template}    |  56 +--
 .../terraform/bin/deploy/provisioning.yml          |   7 +-
 .../terraform/bin/deploy/renew_certificates.sh     |   2 +-
 .../terraform/bin/deploy/supervisor_svc.conf       |  10 +
 infrastructure-provisioning/terraform/bin/dlab.py  |  22 +
 .../terraform/gcp/endpoint/main/network.tf         |   2 +-
 .../terraform/gcp/endpoint/main/variables.tf       |   8 +
 .../terraform/gcp/endpoint/provisioning.yml        |   2 +-
 pom.xml                                            |   2 +-
 services/billing-aws/billing.yml                   |  37 +-
 services/billing-aws/pom.xml                       | 128 +++---
 .../java/com/epam/dlab/BillingAwsApplication.java} |  13 +-
 .../main/java/com/epam/dlab/BillingScheduler.java  | 267 -----------
 .../main/java/com/epam/dlab/BillingService.java}   |  10 +-
 .../java/com/epam/dlab/BillingServiceImpl.java     | 128 ++++++
 .../src/main/java/com/epam/dlab/BillingTool.java   |  20 +-
 .../src/main/java/com/epam/dlab/Help.java          |  19 +-
 .../java/com/epam/dlab/conf/SecurityConfig.java    |  66 +++
 .../configuration/BillingToolConfiguration.java    |  30 --
 .../dlab/configuration/SchedulerConfiguration.java | 213 ---------
 .../epam/dlab/controller/BillingController.java}   |  31 +-
 .../main/java/com/epam/dlab/core/AdapterBase.java  |   4 +-
 .../java/com/epam/dlab/core/parser/ParserBase.java |  22 +-
 .../com/epam/dlab/core/parser/ParserByLine.java    |  11 +-
 .../java/com/epam/dlab/module/AdapterConsole.java  |   4 +-
 .../java/com/epam/dlab/module/AdapterFile.java     |  23 +-
 .../com/epam/dlab/module/aws/AdapterS3File.java    |   3 +-
 .../java/com/epam/dlab/mongo/AdapterMongoDb.java   |  63 ++-
 .../com/epam/dlab/mongo/DlabResourceTypeDAO.java   | 297 +-----------
 .../java/com/epam/dlab/mongo/ResourceItem.java     | 152 -------
 .../java/com/epam/dlab/mongo/ResourceItemList.java | 136 ------
 .../billing-aws/src/main/resources/application.yml |  34 ++
 .../com/epam/dlab/mongo/ResourceItemListTest.java  |  54 ---
 services/billing-azure/billing.yml                 | 111 +++--
 services/billing-azure/pom.xml                     | 109 +++--
 .../azure/AzureBillableResourcesService.java       | 315 -------------
 .../billing/azure/AzureBillingDetailsService.java  | 194 --------
 .../azure/AzureInvoiceCalculationService.java      |  60 +--
 .../billing/azure/BillingAzureApplication.java}    |   8 +-
 .../dlab/billing/azure/BillingSchedulerAzure.java  | 314 -------------
 .../billing/azure/CalculateBillingService.java}    |   9 +-
 .../billing/azure/CalculateBillingServiceImpl.java | 245 ++++++++++
 .../azure/config/BillingConfigurationAzure.java    |   6 +-
 .../dlab/billing/azure/config/SecurityConfig.java  |  66 +++
 .../azure/controller/BillingController.java}       |  31 +-
 .../azure/model/AzureDailyResourceInvoice.java     |  34 +-
 .../src/main/resources/application.yml             |  59 +++
 services/billing-gcp/billing.yml                   |  34 +-
 services/billing-gcp/pom.xml                       |  30 ++
 .../dlab/billing/gcp/BillingGcpApplication.java    |   2 -
 .../gcp/conf/BillingApplicationConfiguration.java  |   2 -
 .../epam/dlab/billing/gcp/conf/SecurityConfig.java |  66 +++
 .../BillingController.java}                        |  32 +-
 .../com/epam/dlab/billing/gcp/dao/BillingDAO.java  |   5 +-
 .../billing/gcp/dao/impl/BigQueryBillingDAO.java   |  44 +-
 .../dlab/billing/gcp/documents/UserInstance.java   |  55 ---
 .../dlab/billing/gcp/model/GcpBillingData.java     |  10 +-
 .../billing/gcp/repository/BillingRepository.java  |   4 +-
 .../gcp/repository/UserInstanceRepository.java     |  30 --
 .../dlab/billing/gcp/service/BillingService.java   |   7 +-
 .../billing/gcp/service/BillingServiceImpl.java    | 186 --------
 .../impl/BillingServiceImpl.java}                  |  34 +-
 .../epam/dlab/billing/gcp/util/BillingUtils.java   |  95 ----
 .../billing-gcp/src/main/resources/application.yml |  26 +-
 .../gcp/service/BillingServiceImplTest.java        |  87 ----
 .../com/epam/dlab/billing/DlabResourceType.java    |  86 ----
 .../com/epam/dlab/dto/billing/BillingData.java}    |  28 +-
 .../dlab/dto/billing/BillingResourceType.java}     |  14 +-
 .../computational/UserComputationalResource.java   |   8 +-
 .../java/com/epam/dlab/ServiceConfiguration.java   |   9 +
 .../com/epam/dlab/constants/ServiceConsts.java     |   1 +
 services/self-service/pom.xml                      |   6 +
 services/self-service/self-service.yml             |   9 +-
 .../dlab/backendapi/annotation/ProjectAdmin.java}  |  15 +-
 .../com/epam/dlab/backendapi/annotation/User.java} |  15 +-
 .../epam/dlab/backendapi/dao/BaseBillingDAO.java   | 441 +++++-------------
 .../java/com/epam/dlab/backendapi/dao/BaseDAO.java |  64 ++-
 .../com/epam/dlab/backendapi/dao/BillingDAO.java   |  15 +-
 .../java/com/epam/dlab/backendapi/dao/EnvDAO.java  |  19 -
 .../epam/dlab/backendapi/dao/ExploratoryDAO.java   |  19 +
 .../com/epam/dlab/backendapi/dao/ProjectDAO.java   |   2 -
 .../epam/dlab/backendapi/dao/ProjectDAOImpl.java   |  11 +-
 .../com/epam/dlab/backendapi/dao/UserGroupDao.java |   2 -
 .../epam/dlab/backendapi/dao/UserGroupDaoImpl.java |   5 -
 .../com/epam/dlab/backendapi/dao/UserRoleDao.java  |   2 -
 .../epam/dlab/backendapi/dao/UserRoleDaoImpl.java  |   5 -
 .../dlab/backendapi/dao/aws/AwsBillingDAO.java     |  74 ---
 .../dlab/backendapi/dao/azure/AzureBillingDAO.java | 121 -----
 .../dlab/backendapi/dao/gcp/GcpBillingDao.java     |  65 ---
 .../com/epam/dlab/backendapi/domain/BaseShape.java |  23 -
 .../dlab/backendapi/domain/BillingReport.java}     |  32 +-
 .../dlab/backendapi/domain/BillingReportLine.java} |  52 +--
 .../backendapi/domain/DataEngineServiceShape.java  |  37 --
 .../dlab/backendapi/domain/DataEngineShape.java    |  34 --
 .../epam/dlab/backendapi/domain/EndpointShape.java |  14 -
 .../dlab/backendapi/domain/ExploratoryShape.java   |  14 -
 .../dlab/backendapi/domain/ProjectManagingDTO.java |  16 -
 .../com/epam/dlab/backendapi/domain/SsnShape.java  |  14 -
 .../interceptor/ProjectAdminInterceptor.java       |  74 +++
 .../backendapi/modules/AwsSelfServiceModule.java   |  83 ----
 .../backendapi/modules/AzureSelfServiceModule.java |  81 ----
 .../backendapi/modules/CloudProviderModule.java    |  34 +-
 .../epam/dlab/backendapi/modules/DevModule.java    |  30 +-
 .../backendapi/modules/GcpSelfServiceModule.java   |  84 ----
 .../dlab/backendapi/modules/ModuleFactory.java     |  13 -
 .../dlab/backendapi/modules/ProductionModule.java  |  32 +-
 .../dlab/backendapi/resources/BillingResource.java |  12 +-
 .../backendapi/resources/EnvironmentResource.java  |  20 +-
 .../resources/InfrastructureInfoResource.java      |  13 +-
 .../dlab/backendapi/resources/ProjectResource.java |  52 +--
 .../backendapi/resources/UserGroupResource.java    |  67 +--
 .../backendapi/resources/UserRoleResource.java     |   6 +-
 .../backendapi/resources/dto/BillingFilter.java    |  37 +-
 .../resources/dto/HealthStatusPageDTO.java         | 129 +-----
 .../backendapi/resources/dto/ImageInfoRecord.java  |   1 +
 .../resources/dto/ProjectInfrastructureInfo.java   |   3 +
 .../com/epam/dlab/backendapi/roles/UserRole.java   |  13 +-
 .../com/epam/dlab/backendapi/roles/UserRoles.java  |  62 ++-
 .../schedulers/billing/BillingScheduler.java       |  52 +++
 .../dlab/backendapi/service/BillingService.java    |  77 +---
 .../backendapi/service/EnvironmentService.java     |   8 +-
 .../backendapi/service/ExploratoryService.java     |   8 +
 .../service/InfrastructureInfoService.java         |   4 +-
 .../dlab/backendapi/service/ProjectService.java    |  13 +-
 .../epam/dlab/backendapi/service/ShapeFormat.java  |   5 -
 .../dlab/backendapi/service/UserGroupService.java  |  12 +-
 .../backendapi/service/UserRoleServiceImpl.java    |   1 +
 .../backendapi/service/aws/AwsBillingService.java  | 110 -----
 .../service/azure/AzureBillingService.java         | 116 -----
 .../backendapi/service/gcp/GcpBillingService.java  | 104 -----
 .../service/impl/BillingServiceImpl.java           | 338 ++++++++++++++
 .../service/impl/EndpointServiceImpl.java          |   2 +-
 .../service/impl/EnvironmentServiceImpl.java       |  81 ++--
 .../service/impl/ExploratoryServiceImpl.java       |  27 +-
 .../impl/InfrastructureInfoServiceImpl.java        | 112 +++--
 .../service/impl/ProjectServiceImpl.java           |  65 +--
 .../service/impl/UserGroupServiceImpl.java         |  97 ++--
 .../epam/dlab/backendapi/util/BillingUtils.java    | 228 ++++++++++
 .../src/main/resources/mongo/aws/mongo_roles.json  |  19 +
 .../main/resources/mongo/azure/mongo_roles.json    |  19 +
 .../src/main/resources/mongo/gcp/mongo_roles.json  |  20 +
 .../manage-environment-dilog.component.ts          |   2 +-
 .../management-grid/management-grid.component.html |  30 +-
 .../management-grid/management-grid.component.ts   |   4 +-
 .../management/management.component.ts             |   3 +-
 .../administration/management/management.model.ts  |   1 +
 .../administration/project/project.component.html  |   8 +-
 .../administration/project/project.component.ts    |   9 +-
 .../app/administration/roles/roles.component.html  |  35 +-
 .../app/administration/roles/roles.component.scss  |   7 +
 .../app/administration/roles/roles.component.ts    |  58 ++-
 .../services/applicationServiceFacade.service.ts   |  10 -
 .../src/app/core/services/healthStatus.service.ts  |  11 +-
 .../src/app/core/services/project.service.ts       |  18 -
 .../reporting-grid/reporting-grid.component.html   | 123 ++---
 .../reporting-grid/reporting-grid.component.scss   |  68 ++-
 .../reporting-grid/reporting-grid.component.ts     |  44 +-
 .../src/app/reporting/reporting.component.ts       |  96 ++--
 .../app/reporting/toolbar/toolbar.component.html   |   4 +-
 .../cost-details-dialog.component.html             |  22 +-
 .../cost-details-dialog.component.scss             |   2 +-
 .../resources-grid/resources-grid.component.html   |  38 +-
 .../resources-grid/resources-grid.component.scss   |   4 +
 .../resources-grid/resources-grid.component.ts     |   7 +-
 .../resources-grid/resources-grid.model.ts         |  62 +--
 .../src/app/resources/resources.component.html     |   2 +-
 .../src/app/resources/resources.component.ts       |  17 +-
 .../multi-level-select-dropdown.component.html     |  26 +-
 .../multi-level-select-dropdown.component.scss     |  25 +-
 .../multi-level-select-dropdown.component.ts       |   1 +
 .../multi-select-dropdown.component.html           |   3 +-
 .../confirmation-dialog.component.html             |   3 +-
 .../confirmation-dialog.model.ts                   |   6 +-
 .../src/app/shared/navbar/navbar.component.html    |   2 +-
 .../src/app/shared/navbar/navbar.component.ts      |   2 +-
 .../resources/webapp/src/assets/styles/_theme.scss |   5 +
 .../webapp/src/dictionary/gcp.dictionary.ts        |   2 +-
 .../webapp/src/dictionary/global.dictionary.ts     |  20 +-
 .../resources/EnvironmentResourceTest.java         |  97 +---
 .../resources/ImageExploratoryResourceTest.java    |   2 +-
 .../resources/InfrastructureInfoResourceTest.java  |  38 +-
 .../backendapi/resources/ProjectResourceTest.java  |  24 +-
 .../resources/UserGroupResourceTest.java           | 206 ++-------
 .../backendapi/resources/UserRoleResourceTest.java |   7 +-
 .../service/UserRoleServiceImplTest.java           |  42 +-
 .../service/aws/AwsBillingServiceTest.java         | 224 ---------
 .../service/azure/AzureBillingServiceTest.java     | 208 ---------
 .../service/impl/EnvironmentServiceImplTest.java   |  71 ---
 .../impl/ImageExploratoryServiceImplTest.java      |   2 +-
 .../service/impl/UserGroupServiceImplTest.java     | 156 +++----
 255 files changed, 4706 insertions(+), 6955 deletions(-)

diff --cc infrastructure-provisioning/src/ssn/templates/ssn.yml
index 503116f,7b18d26..41a9723
--- a/infrastructure-provisioning/src/ssn/templates/ssn.yml
+++ b/infrastructure-provisioning/src/ssn/templates/ssn.yml
@@@ -62,10 -62,10 +62,15 @@@ provisioningService
      timeout: 3s
      connectionTimeout: 3s
  
 +bucketService:
 +  jerseyClient:
 +    timeout: 10m
 +    connectionTimeout: 3s
 +
+ billingService:
+   jerseyClient:
+     timeout: 4m
+     connectionTimeout: 3s
+ 
  # Log out user on inactivity
  inactiveUserTimeoutMillSec: 7200000
diff --cc services/dlab-webapp-common/src/main/java/com/epam/dlab/ServiceConfiguration.java
index 51b0779,3297abd..1ae0afb
--- a/services/dlab-webapp-common/src/main/java/com/epam/dlab/ServiceConfiguration.java
+++ b/services/dlab-webapp-common/src/main/java/com/epam/dlab/ServiceConfiguration.java
@@@ -54,11 -54,11 +54,16 @@@ public class ServiceConfiguration exten
  
      @Valid
      @NotNull
 +    @JsonProperty(ServiceConsts.BUCKET_SERVICE_NAME)
 +    private RESTServiceFactory bucketFactory = new RESTServiceFactory();
 +
 +    @Valid
 +    @NotNull
+     @JsonProperty(ServiceConsts.BILLING_SERVICE_NAME)
+     private RESTServiceFactory billingFactory = new RESTServiceFactory();
+ 
+     @Valid
+     @NotNull
      @JsonProperty(ServiceConsts.SECURITY_SERVICE_NAME)
      private RESTServiceFactory securityFactory;
  
@@@ -90,10 -90,10 +95,14 @@@
          return provisioningFactory;
      }
  
 +    public RESTServiceFactory getBucketFactory() {
 +        return bucketFactory;
 +    }
 +
+     public RESTServiceFactory getBillingFactory() {
+         return billingFactory;
+     }
+ 
      public RESTServiceFactory getSecurityFactory() {
          return securityFactory;
      }
diff --cc services/dlab-webapp-common/src/main/java/com/epam/dlab/constants/ServiceConsts.java
index d7d7208,e1bcf23..b04db9f
--- a/services/dlab-webapp-common/src/main/java/com/epam/dlab/constants/ServiceConsts.java
+++ b/services/dlab-webapp-common/src/main/java/com/epam/dlab/constants/ServiceConsts.java
@@@ -20,14 -20,14 +20,15 @@@
  package com.epam.dlab.constants;
  
  public final class ServiceConsts {
 -    public static final String MONGO_NAME = "mongo";
 -    public static final String PROVISIONING_SERVICE_NAME = "provisioningService";
 -    public static final String BILLING_SERVICE_NAME = "billingService";
 -    public static final String MAVEN_SEARCH_API = "mavenSearchService";
 -    public static final String SECURITY_SERVICE_NAME = "securityService";
 -    public static final String SELF_SERVICE_NAME = "selfService";
 -    public static final String PROVISIONING_USER_AGENT = "provisioning-service";
 +	public static final String MONGO_NAME = "mongo";
 +	public static final String PROVISIONING_SERVICE_NAME = "provisioningService";
++	public static final String BILLING_SERVICE_NAME = "billingService";
 +	public static final String BUCKET_SERVICE_NAME = "bucketService";
 +	public static final String MAVEN_SEARCH_API = "mavenSearchService";
 +	public static final String SECURITY_SERVICE_NAME = "securityService";
 +	public static final String SELF_SERVICE_NAME = "selfService";
 +	public static final String PROVISIONING_USER_AGENT = "provisioning-service";
  
 -    private ServiceConsts() {
 -    }
 +	private ServiceConsts() {
 +	}
  }
diff --cc services/self-service/src/main/java/com/epam/dlab/backendapi/modules/CloudProviderModule.java
index c4c771d,8b41baf..f75f877
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/modules/CloudProviderModule.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/modules/CloudProviderModule.java
@@@ -21,14 -21,11 +21,12 @@@ package com.epam.dlab.backendapi.module
  
  import com.epam.dlab.backendapi.SelfServiceApplication;
  import com.epam.dlab.backendapi.annotation.BudgetLimited;
+ import com.epam.dlab.backendapi.annotation.ProjectAdmin;
  import com.epam.dlab.backendapi.conf.SelfServiceApplicationConfiguration;
- import com.epam.dlab.backendapi.dao.BillingDAO;
- import com.epam.dlab.backendapi.dao.aws.AwsBillingDAO;
- import com.epam.dlab.backendapi.dao.azure.AzureBillingDAO;
- import com.epam.dlab.backendapi.dao.gcp.GcpBillingDao;
  import com.epam.dlab.backendapi.interceptor.BudgetLimitInterceptor;
+ import com.epam.dlab.backendapi.interceptor.ProjectAdminInterceptor;
  import com.epam.dlab.backendapi.resources.BillingResource;
 +import com.epam.dlab.backendapi.resources.BucketResource;
  import com.epam.dlab.backendapi.resources.aws.ComputationalResourceAws;
  import com.epam.dlab.backendapi.resources.azure.ComputationalResourceAzure;
  import com.epam.dlab.backendapi.resources.gcp.ComputationalResourceGcp;
diff --cc services/self-service/src/main/java/com/epam/dlab/backendapi/modules/DevModule.java
index f8de46d,9275319..31b4056
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/modules/DevModule.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/modules/DevModule.java
@@@ -132,9 -132,9 +134,12 @@@ public class DevModule extends ModuleBa
  		bind(RESTService.class).annotatedWith(Names.named(ServiceConsts.PROVISIONING_SERVICE_NAME))
  				.toInstance(configuration.getProvisioningFactory()
  						.build(environment, ServiceConsts.PROVISIONING_SERVICE_NAME));
 +		bind(RESTService.class).annotatedWith(Names.named(ServiceConsts.BUCKET_SERVICE_NAME))
 +				.toInstance(configuration.getBucketFactory()
 +						.build(environment, ServiceConsts.BUCKET_SERVICE_NAME));
+ 		bind(RESTService.class).annotatedWith(Names.named(ServiceConsts.BILLING_SERVICE_NAME))
+ 				.toInstance(configuration.getBillingFactory()
+ 						.build(environment, ServiceConsts.BILLING_SERVICE_NAME));
  		bind(ImageExploratoryService.class).to(ImageExploratoryServiceImpl.class);
  		bind(ImageExploratoryDao.class).to(ImageExploratoryDaoImpl.class);
  		bind(BackupService.class).to(BackupServiceImpl.class);
@@@ -156,18 -156,18 +161,19 @@@
  		bind(ExternalLibraryService.class).to(MavenCentralLibraryService.class);
  		bind(SystemInfoService.class).to(SystemInfoServiceImpl.class);
  		bind(UserGroupService.class).to(UserGroupServiceImpl.class);
-         bind(UserRoleService.class).to(UserRoleServiceImpl.class);
-         bind(UserRoleDao.class).to(UserRoleDaoImpl.class);
-         bind(UserGroupDao.class).to(UserGroupDaoImpl.class);
-         bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
-         bind(UserSettingService.class).to(UserSettingServiceImpl.class);
-         bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
-         bind(EndpointService.class).to(EndpointServiceImpl.class);
-         bind(EndpointDAO.class).to(EndpointDAOImpl.class);
-         bind(ProjectService.class).to(ProjectServiceImpl.class);
-         bind(ProjectDAO.class).to(ProjectDAOImpl.class);
-         bind(BucketService.class).to(BucketServiceImpl.class);
-     }
+ 		bind(UserRoleService.class).to(UserRoleServiceImpl.class);
+ 		bind(UserRoleDao.class).to(UserRoleDaoImpl.class);
+ 		bind(UserGroupDao.class).to(UserGroupDaoImpl.class);
+ 		bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
+ 		bind(UserSettingService.class).to(UserSettingServiceImpl.class);
+ 		bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
+ 		bind(EndpointService.class).to(EndpointServiceImpl.class);
+ 		bind(EndpointDAO.class).to(EndpointDAOImpl.class);
+ 		bind(ProjectService.class).to(ProjectServiceImpl.class);
+ 		bind(ProjectDAO.class).to(ProjectDAOImpl.class);
+ 		bind(BillingDAO.class).to(BaseBillingDAO.class);
++		bind(BucketService.class).to(BucketServiceImpl.class);
+ 	}
  
  	private void configureCors(Environment environment) {
  		final FilterRegistration.Dynamic cors =
diff --cc services/self-service/src/main/java/com/epam/dlab/backendapi/modules/ProductionModule.java
index 6896ee7,d20adbf..5fb314d
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/modules/ProductionModule.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/modules/ProductionModule.java
@@@ -123,9 -123,9 +125,12 @@@ public class ProductionModule extends M
  		bind(RESTService.class).annotatedWith(Names.named(ServiceConsts.PROVISIONING_SERVICE_NAME))
  				.toInstance(configuration.getProvisioningFactory().build(environment, ServiceConsts
  						.PROVISIONING_SERVICE_NAME));
 +		bind(RESTService.class).annotatedWith(Names.named(ServiceConsts.BUCKET_SERVICE_NAME))
 +				.toInstance(configuration.getBucketFactory().build(environment, ServiceConsts
 +						.BUCKET_SERVICE_NAME));
+ 		bind(RESTService.class).annotatedWith(Names.named(ServiceConsts.BILLING_SERVICE_NAME))
+ 				.toInstance(configuration.getBillingFactory()
+ 						.build(environment, ServiceConsts.BILLING_SERVICE_NAME));
  		bind(ImageExploratoryService.class).to(ImageExploratoryServiceImpl.class);
  		bind(ImageExploratoryDao.class).to(ImageExploratoryDaoImpl.class);
  		bind(BackupService.class).to(BackupServiceImpl.class);
@@@ -148,17 -148,17 +153,18 @@@
  		bind(UserRoleDao.class).to(UserRoleDaoImpl.class);
  		bind(UserGroupDao.class).to(UserGroupDaoImpl.class);
  		bind(InactivityService.class).to(InactivityServiceImpl.class);
-         bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
-         bind(UserSettingService.class).to(UserSettingServiceImpl.class);
-         bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
-         bind(EndpointService.class).to(EndpointServiceImpl.class);
-         bind(EndpointDAO.class).to(EndpointDAOImpl.class);
-         bind(ProjectService.class).to(ProjectServiceImpl.class);
-         bind(ProjectDAO.class).to(ProjectDAOImpl.class);
-         bind(TagService.class).to(TagServiceImpl.class);
-         bind(SecurityService.class).to(SecurityServiceImpl.class);
-         bind(KeycloakService.class).to(KeycloakServiceImpl.class);
-         bind(BucketService.class).to(BucketServiceImpl.class);
-         bind(Client.class).toInstance(httpClient);
-     }
+ 		bind(ApplicationSettingService.class).to(ApplicationSettingServiceImpl.class);
+ 		bind(UserSettingService.class).to(UserSettingServiceImpl.class);
+ 		bind(GuacamoleService.class).to(GuacamoleServiceImpl.class);
+ 		bind(EndpointService.class).to(EndpointServiceImpl.class);
+ 		bind(EndpointDAO.class).to(EndpointDAOImpl.class);
+ 		bind(ProjectService.class).to(ProjectServiceImpl.class);
+ 		bind(ProjectDAO.class).to(ProjectDAOImpl.class);
+ 		bind(BillingDAO.class).to(BaseBillingDAO.class);
++		bind(BucketService.class).to(BucketServiceImpl.class);
+ 		bind(TagService.class).to(TagServiceImpl.class);
+ 		bind(SecurityService.class).to(SecurityServiceImpl.class);
+ 		bind(KeycloakService.class).to(KeycloakServiceImpl.class);
+ 		bind(Client.class).toInstance(httpClient);
+ 	}
  }
diff --cc services/self-service/src/main/resources/mongo/aws/mongo_roles.json
index 076dc75,6a8fd29..942f281
--- a/services/self-service/src/main/resources/mongo/aws/mongo_roles.json
+++ b/services/self-service/src/main/resources/mongo/aws/mongo_roles.json
@@@ -324,54 -324,23 +324,71 @@@
      ]
    },
    {
 +    "_id": "bucketBrowserView",
 +    "description": "Allow to view objects within the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/view"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserUpload",
 +    "description": "Allow to upload object to the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/upload"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserDownload",
 +    "description": "Allow to download object from the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/download"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserDelete",
 +    "description": "Allow to delete object from the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/delete"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
+     "_id": "projectAdmin",
+     "description": "Allow to execute administration operation per project",
+     "type": "ADMINISTRATION",
+     "cloud": "AWS",
+     "pages": [
+       "environment/*",
+       "/roleManagement",
+       "/api/settings",
+       "/user/settings",
+       "/api/project",
+       "/api/endpoint"
+     ],
+     "groups": [
+       "$anyuser"
+     ]
+   },
+   {
      "_id": "admin",
      "description": "Allow to execute administration operation",
      "type": "ADMINISTRATION",
diff --cc services/self-service/src/main/resources/mongo/azure/mongo_roles.json
index 886b635,86eadff..f05f3d1
--- a/services/self-service/src/main/resources/mongo/azure/mongo_roles.json
+++ b/services/self-service/src/main/resources/mongo/azure/mongo_roles.json
@@@ -264,54 -264,23 +264,71 @@@
      ]
    },
    {
 +    "_id": "bucketBrowserView",
 +    "description": "Allow to view objects within the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/view"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserUpload",
 +    "description": "Allow to upload object to the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/upload"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserDownload",
 +    "description": "Allow to download object from the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/download"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserDelete",
 +    "description": "Allow to delete object from the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/delete"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
+     "_id": "projectAdmin",
+     "description": "Allow to execute administration operation per project",
+     "type": "ADMINISTRATION",
+     "cloud": "AZURE",
+     "pages": [
+       "environment/*",
+       "/roleManagement",
+       "/api/settings",
+       "/user/settings",
+       "/api/project",
+       "/api/endpoint"
+     ],
+     "groups": [
+       "$anyuser"
+     ]
+   },
+   {
      "_id": "admin",
      "description": "Allow to execute administration operation",
      "type": "ADMINISTRATION",
diff --cc services/self-service/src/main/resources/mongo/gcp/mongo_roles.json
index 1dc61ae,d2ef6dd..8a36ff4
--- a/services/self-service/src/main/resources/mongo/gcp/mongo_roles.json
+++ b/services/self-service/src/main/resources/mongo/gcp/mongo_roles.json
@@@ -300,54 -300,23 +300,71 @@@
      ]
    },
    {
 +    "_id": "bucketBrowserView",
 +    "description": "Allow to view objects within the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/view"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserUpload",
 +    "description": "Allow to upload object to the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/upload"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserDownload",
 +    "description": "Allow to download object from the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/download"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
 +    "_id": "bucketBrowserDelete",
 +    "description": "Allow to delete object from the bucket",
 +    "type": "BUCKET_BROWSER",
 +    "cloud": "GCP",
 +    "pages": [
 +      "/api/bucket/delete"
 +    ],
 +    "groups": [
 +      "$anyuser"
 +    ]
 +  },
 +  {
+     "_id": "projectAdmin",
+     "description": "Allow to execute administration operation per project",
+     "type": "ADMINISTRATION",
+     "cloud": "GCP",
+     "pages": [
+       "environment/*",
+       "/roleManagement",
+       "/api/settings",
+       "/user/settings",
+       "/api/project",
+       "/api/endpoint"
+     ],
+     "groups": [
+       "$anyuser"
+     ]
+   },
+   {
      "_id": "admin",
      "description": "Allow to execute administration operation",
      "type": "ADMINISTRATION",
diff --cc services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts
index 6394d89,2587a62..7933fec
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources.component.ts
@@@ -24,10 -24,9 +24,10 @@@ import { MatDialog } from '@angular/mat
  import { ResourcesGridComponent } from './resources-grid/resources-grid.component';
  import { ExploratoryEnvironmentCreateComponent } from './exploratory/create-environment';
  import { Exploratory } from './resources-grid/resources-grid.model';
- import { HealthStatusService, ProjectService } from '../core/services';
+ import {ApplicationSecurityService, HealthStatusService} from '../core/services';
  import { ManageUngitComponent } from './manage-ungit/manage-ungit.component';
  import { Project } from './../administration/project/project.component';
 +import {BucketBrowserComponent} from './bucket-browser/bucket-browser.component';
  
  @Component({
    selector: 'dlab-resources',


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