You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by bh...@apache.org on 2019/09/05 11:38:37 UTC
[incubator-dlab] branch DLAB-terraform updated: DLAB-000 unified
cloud properties from different cloud providers
This is an automated email from the ASF dual-hosted git repository.
bhliva pushed a commit to branch DLAB-terraform
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-terraform by this push:
new 180f8c5 DLAB-000 unified cloud properties from different cloud providers
180f8c5 is described below
commit 180f8c548dc449851471a5ca26efc706ad4a2633
Author: bhliva <bo...@epam.com>
AuthorDate: Thu Sep 5 14:36:42 2019 +0300
DLAB-000 unified cloud properties from different cloud providers
---
.../dlab/backendapi/conf/CloudConfiguration.java | 6 +
.../com/epam/dlab/backendapi/dao/MongoSetting.java | 124 ++++++++++++---------
.../com/epam/dlab/backendapi/dao/SettingsDAO.java | 65 ++++++++++-
.../dropwizard/listeners/MongoStartupListener.java | 14 +++
4 files changed, 155 insertions(+), 54 deletions(-)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/conf/CloudConfiguration.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/conf/CloudConfiguration.java
index 1bd641a..2db4734 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/conf/CloudConfiguration.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/conf/CloudConfiguration.java
@@ -21,6 +21,12 @@ public class CloudConfiguration {
private final String notebookSubnetId;
private final String confKeyDir;
private final String vpcId;
+ private final String azureResourceGroupName;
+ private final String ssnStorageAccountTagName;
+ private final String sharedStorageAccountTagName;
+ private final String datalakeTagName;
+ private final String azureClientId;
+ private final String peeringId;
@JsonProperty("ldap")
private final LdapConfig ldapConfig;
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/MongoSetting.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/MongoSetting.java
index dabb214..4656b6b 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/MongoSetting.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/MongoSetting.java
@@ -19,67 +19,89 @@
package com.epam.dlab.backendapi.dao;
-/** Name of fields in the Mongo collection {@link MongoCollections#SETTINGS}. */
+/**
+ * Name of fields in the Mongo collection {@link MongoCollections#SETTINGS}.
+ */
public enum MongoSetting {
- // General properties
- /** Base name of service. */
- SERIVICE_BASE_NAME("conf_service_base_name"),
- /** Name of directory for user key. */
- CONF_KEY_DIRECTORY("conf_key_dir"),
- /** Name of resource id. */
- CONF_TAG_RESOURCE_ID("conf_tag_resource_id"),
- /** Name of OS family. */
- CONF_OS_FAMILY("conf_os_family"),
+ // General properties
+ /**
+ * Base name of service.
+ */
+ SERIVICE_BASE_NAME("conf_service_base_name"),
+ /**
+ * Name of directory for user key.
+ */
+ CONF_KEY_DIRECTORY("conf_key_dir"),
+ /**
+ * Name of resource id.
+ */
+ CONF_TAG_RESOURCE_ID("conf_tag_resource_id"),
+ /**
+ * Name of OS family.
+ */
+ CONF_OS_FAMILY("conf_os_family"),
+
+ CONF_MAX_BUDGET("conf_max_budget"),
+ SSN_STORAGE_ACCOUNT_TAG_NAME("ssn_storage_account_tag_name"),
+ SHARED_STORAGE_ACCOUNT_TAG_NAME("shared_storage_account_tag_name"),
- CONF_MAX_BUDGET("conf_max_budget"),
+ LDAP_HOSTNAME("ldap_hostname"),
+ LDAP_DN("ldap_dn"),
+ LDAP_OU("ldap_ou"),
+ LDAP_USER("ldap_service_username"),
+ LDAP_PASSWORD("ldap_service_password"),
- LDAP_HOSTNAME("ldap_hostname"),
- LDAP_DN("ldap_dn"),
- LDAP_OU("ldap_ou"),
- LDAP_USER("ldap_service_username"),
- LDAP_PASSWORD("ldap_service_password"),
+ PEERING_ID("peering_id"),
- // AWS Related properties
- /** Name of AWS region. */
- AWS_REGION("aws_region"),
- /** Id of security group. */
- AWS_SECURITY_GROUPS("aws_security_groups_ids"),
- /** Id of virtual private cloud for AWS account. */
- AWS_VPC_ID("aws_vpc_id"),
- /** Id of virtual private cloud subnet for AWS account. */
- AWS_SUBNET_ID("aws_subnet_id"),
- AWS_NOTEBOOK_VPC_ID("aws_notebook_vpc_id"),
- AWS_NOTEBOOK_SUBNET_ID("aws_notebook_subnet_id"),
- AWS_ZONE("aws_zone"),
+ // AWS Related properties
+ /**
+ * Name of AWS region.
+ */
+ AWS_REGION("aws_region"),
+ /**
+ * Id of security group.
+ */
+ AWS_SECURITY_GROUPS("aws_security_groups_ids"),
+ /**
+ * Id of virtual private cloud for AWS account.
+ */
+ AWS_VPC_ID("aws_vpc_id"),
+ /**
+ * Id of virtual private cloud subnet for AWS account.
+ */
+ AWS_SUBNET_ID("aws_subnet_id"),
+ AWS_NOTEBOOK_VPC_ID("aws_notebook_vpc_id"),
+ AWS_NOTEBOOK_SUBNET_ID("aws_notebook_subnet_id"),
+ AWS_ZONE("aws_zone"),
- // Azure related properties
- AZURE_REGION("azure_region"),
- AZURE_RESOURCE_GROUP_NAME("azure_resource_group_name"),
- AZURE_SUBNET_NAME("azure_subnet_name"),
- AZURE_VPC_NAME("azure_vpc_name"),
- AZURE_SECURITY_GROUP_NAME("azure_security_group_name"),
- AZURE_EDGE_INSTANCE_SIZE("edge_instance_size"),
- AZURE_SSN_INSTANCE_SIZE("ssn_instance_size"),
- AZURE_DATA_LAKE_NAME_TAG("datalake_tag_name"),
- AZURE_DATA_LAKE_CLIENT_ID("azure_client_id"),
+ // Azure related properties
+ AZURE_REGION("azure_region"),
+ AZURE_RESOURCE_GROUP_NAME("azure_resource_group_name"),
+ AZURE_SUBNET_NAME("azure_subnet_name"),
+ AZURE_VPC_NAME("azure_vpc_name"),
+ AZURE_SECURITY_GROUP_NAME("azure_security_group_name"),
+ AZURE_EDGE_INSTANCE_SIZE("edge_instance_size"),
+ AZURE_SSN_INSTANCE_SIZE("ssn_instance_size"),
+ AZURE_DATA_LAKE_NAME_TAG("datalake_tag_name"),
+ AZURE_DATA_LAKE_CLIENT_ID("azure_client_id"),
- // GCP related properties
- GCP_REGION("gcp_region"),
- GCP_ZONE("gcp_zone"),
- GCP_SUBNET_NAME("gcp_subnet_name"),
- GCP_PROJECT_ID("gcp_project_id"),
- GCP_VPC_NAME("gcp_vpc_name");
+ // GCP related properties
+ GCP_REGION("gcp_region"),
+ GCP_ZONE("gcp_zone"),
+ GCP_SUBNET_NAME("gcp_subnet_name"),
+ GCP_PROJECT_ID("gcp_project_id"),
+ GCP_VPC_NAME("gcp_vpc_name");
- private String id;
+ private String id;
- MongoSetting(String id) {
- this.id = id;
- }
+ MongoSetting(String id) {
+ this.id = id;
+ }
- public String getId() {
- return id;
- }
+ public String getId() {
+ return id;
+ }
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SettingsDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SettingsDAO.java
index 3326e3c..3c35109 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SettingsDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/SettingsDAO.java
@@ -21,6 +21,7 @@ package com.epam.dlab.backendapi.dao;
import com.epam.dlab.exceptions.DlabException;
import com.mongodb.client.model.UpdateOptions;
+import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
import java.util.Map;
@@ -184,6 +185,26 @@ public class SettingsDAO extends BaseDAO {
return getSetting(AWS_NOTEBOOK_VPC_ID);
}
+ public void setSsnStorageAccountTagName(String ssnStorageAccountTagName) {
+ setSetting(SSN_STORAGE_ACCOUNT_TAG_NAME, ssnStorageAccountTagName);
+ }
+
+ public String getSsnStorageAccountTagName() {
+ return getSetting(SSN_STORAGE_ACCOUNT_TAG_NAME);
+ }
+
+ public void setSharedStorageAccountTagName(String sharedStorageAccountTagName) {
+ setSetting(SHARED_STORAGE_ACCOUNT_TAG_NAME, sharedStorageAccountTagName);
+ }
+
+ public String getSharedStorageAccountTagName() {
+ return getSetting(SHARED_STORAGE_ACCOUNT_TAG_NAME);
+ }
+
+ public void setPeeringId(String peeringId) {
+ setSetting(PEERING_ID, peeringId);
+ }
+
public void setAwsNotebookVpcId(String awsNotebookVpcId) {
setSetting(AWS_NOTEBOOK_VPC_ID, awsNotebookVpcId);
}
@@ -237,6 +258,42 @@ public class SettingsDAO extends BaseDAO {
return getSetting(AZURE_DATA_LAKE_CLIENT_ID);
}
+ public void setAzureRegion(String region) {
+ setSetting(AZURE_REGION, region);
+ }
+
+ public void setAzureResourceGroupName(String resourceGroupName) {
+ setSetting(AZURE_RESOURCE_GROUP_NAME, resourceGroupName);
+ }
+
+ public void setAzureSubnetName(String subnetName) {
+ setSetting(AZURE_SUBNET_NAME, subnetName);
+ }
+
+ public void setAzureVpcName(String vpcName) {
+ setSetting(AZURE_VPC_NAME, vpcName);
+ }
+
+ public void setAzureSecurityGroupName(String securityGroupName) {
+ setSetting(AZURE_SECURITY_GROUP_NAME, securityGroupName);
+ }
+
+ public void setAzureEdgeInstanceSize(String azureEdgeInstanceSize) {
+ setSetting(AZURE_EDGE_INSTANCE_SIZE, azureEdgeInstanceSize);
+ }
+
+ public void setAzureSsnInstanceSize(String ssnInstanceSize) {
+ setSetting(AZURE_SSN_INSTANCE_SIZE, ssnInstanceSize);
+ }
+
+ public void setAzureDataLakeNameTag(String dataLakeNameTag) {
+ setSetting(AZURE_DATA_LAKE_NAME_TAG, dataLakeNameTag);
+ }
+
+ public void setAzureDataLakeClientId(String dataLakeClientId) {
+ setSetting(AZURE_DATA_LAKE_CLIENT_ID, dataLakeClientId);
+ }
+
public String getGcpRegion() {
return getSetting(GCP_REGION);
}
@@ -296,9 +353,11 @@ public class SettingsDAO extends BaseDAO {
}
private void setSetting(MongoSetting mongoSetting, String value) {
- mongoService.getCollection(SETTINGS)
- .updateOne(eq(ID, mongoSetting.getId()), new Document("$set", new Document(VALUE, value)),
- new UpdateOptions().upsert(true));
+ if (StringUtils.isNotEmpty(value)) {
+ mongoService.getCollection(SETTINGS)
+ .updateOne(eq(ID, mongoSetting.getId()), new Document("$set", new Document(VALUE, value)),
+ new UpdateOptions().upsert(true));
+ }
}
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dropwizard/listeners/MongoStartupListener.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dropwizard/listeners/MongoStartupListener.java
index f94028a..1651c80 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dropwizard/listeners/MongoStartupListener.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dropwizard/listeners/MongoStartupListener.java
@@ -56,6 +56,8 @@ public class MongoStartupListener implements ServerLifecycleListener {
settingsDAO.setLdapOu(ldapConfig.getOu());
settingsDAO.setLdapUser(ldapConfig.getUser());
settingsDAO.setLdapPassword(ldapConfig.getPassword());
+ settingsDAO.setSsnStorageAccountTagName(cloudConfiguration.getSsnStorageAccountTagName());
+ settingsDAO.setPeeringId(cloudConfiguration.getPeeringId());
if (configuration.getCloudProvider() == CloudProvider.AWS) {
settingsDAO.setAwsZone(cloudConfiguration.getZone());
@@ -66,6 +68,18 @@ public class MongoStartupListener implements ServerLifecycleListener {
settingsDAO.setAwsNotebookSubnetId(cloudConfiguration.getNotebookSubnetId());
settingsDAO.setAwsSecurityGroups(cloudConfiguration.getSecurityGroupIds());
}
+
+ if (configuration.getCloudProvider() == CloudProvider.AZURE) {
+ settingsDAO.setAzureRegion(cloudConfiguration.getRegion());
+ settingsDAO.setAzureVpcName(cloudConfiguration.getVpcId());
+ settingsDAO.setAzureDataLakeClientId(cloudConfiguration.getAzureClientId());
+ settingsDAO.setAzureResourceGroupName(cloudConfiguration.getAzureResourceGroupName());
+ settingsDAO.setAzureSecurityGroupName(cloudConfiguration.getSecurityGroupIds());
+ settingsDAO.setAzureDataLakeNameTag(cloudConfiguration.getDatalakeTagName());
+ settingsDAO.setSsnStorageAccountTagName(cloudConfiguration.getSsnStorageAccountTagName());
+ settingsDAO.setSharedStorageAccountTagName(cloudConfiguration.getSharedStorageAccountTagName());
+
+ }
}
private void insertRoles() {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org