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 <olegfuk...@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-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org