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/03/16 15:40:24 UTC

[incubator-dlab] 07/09: Changed config file

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

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

commit 27bd697da366098c4d3272b0e4d06bb7fa08ad9f
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Mon Mar 16 15:15:14 2020 +0200

    Changed config file
---
 services/billing-azure/billing.yml                 | 21 +-----
 .../dlab/billing/azure/BillingSchedulerAzure.java  | 80 ++++++++--------------
 .../azure/config/BillingConfigurationAzure.java    |  5 +-
 .../billing/azure/config/DlabConfiguration.java    | 47 -------------
 .../src/main/resources/application.yml             | 28 +++++++-
 5 files changed, 60 insertions(+), 121 deletions(-)

diff --git a/services/billing-azure/billing.yml b/services/billing-azure/billing.yml
index da47bd1..aec73ce 100644
--- a/services/billing-azure/billing.yml
+++ b/services/billing-azure/billing.yml
@@ -55,23 +55,4 @@ aggregationOutputMongoDataSource:
 
 ssnStorageAccountTagName: <AZURE_SSN_STORAGE_ACCOUNT_TAG>
 sharedStorageAccountTagName: <AZURE_SHARED_STORAGE_ACCOUNT_TAG>
-datalakeTagName: <AZURE_DATALAKE_TAG>
-
-# Logging configuration.
-logging:
-  # Default logging level
-  level: INFO
-  # Logging levels for appenders.
-  loggers:
-    com.epam: DEBUG
-    org.apache.http: WARN
-    org.mongodb.driver: WARN
-    org.hibernate: WARN
-  #Logging appenders
-  appenders:
-    #- type: console
-    - type: file
-      currentLogFilename: /var/opt/dlab/log/ssn/billing.log
-      archive: true
-      archivedLogFilenamePattern: /var/opt/dlab/log/ssn/billing-%d{yyyy-MM-dd}.log.gz
-      archivedFileCount: 10
\ No newline at end of file
+datalakeTagName: <AZURE_DATALAKE_TAG>
\ No newline at end of file
diff --git a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/BillingSchedulerAzure.java b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/BillingSchedulerAzure.java
index d0b4dba..0e11a1f 100644
--- a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/BillingSchedulerAzure.java
+++ b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/BillingSchedulerAzure.java
@@ -22,18 +22,13 @@ package com.epam.dlab.billing.azure;
 import com.epam.dlab.MongoKeyWords;
 import com.epam.dlab.billing.azure.config.AzureAuthFile;
 import com.epam.dlab.billing.azure.config.BillingConfigurationAzure;
-import com.epam.dlab.billing.azure.logging.AppenderConsole;
-import com.epam.dlab.billing.azure.logging.AppenderFile;
 import com.epam.dlab.billing.azure.model.AzureDailyResourceInvoice;
 import com.epam.dlab.billing.azure.model.AzureDlabBillableResource;
 import com.epam.dlab.billing.azure.model.BillingPeriod;
 import com.epam.dlab.exceptions.DlabException;
-import com.epam.dlab.exceptions.InitializationException;
 import com.epam.dlab.util.mongo.modules.IsoDateModule;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
-import com.fasterxml.jackson.datatype.guava.GuavaModule;
 import com.mongodb.BasicDBObject;
 import com.mongodb.client.model.Filters;
 import com.mongodb.client.model.UpdateOptions;
@@ -44,8 +39,10 @@ import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 import org.joda.time.format.DateTimeFormat;
 import org.joda.time.format.DateTimeFormatter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
-import java.io.FileInputStream;
+import javax.annotation.PostConstruct;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -57,59 +54,43 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @Slf4j
+@Component
 public class BillingSchedulerAzure {
 	private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
 	private BillingConfigurationAzure billingConfigurationAzure;
 	private MongoDbBillingClient mongoDbBillingClient;
 
-	public BillingSchedulerAzure(String filePath) throws IOException, InitializationException {
-		try (FileInputStream fin = new FileInputStream(filePath)) {
-			final ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()).registerModule(new GuavaModule());
-			objectMapper.registerSubtypes(AppenderFile.class, AppenderConsole.class);
-			this.billingConfigurationAzure = objectMapper.readValue(fin,
-							BillingConfigurationAzure.class);
+	@Autowired
+	public BillingSchedulerAzure(BillingConfigurationAzure configuration) throws IOException {
+		billingConfigurationAzure = configuration;
+		Path path = Paths.get(billingConfigurationAzure.getAuthenticationFile());
 
-			Path path = Paths.get(billingConfigurationAzure.getAuthenticationFile());
-
-			if (path.toFile().exists()) {
-
-				log.info("Read and override configs using auth file");
-
-				try {
-					AzureAuthFile azureAuthFile = new ObjectMapper().readValue(path.toFile(), AzureAuthFile.class);
-					this.billingConfigurationAzure.setClientId(azureAuthFile.getClientId());
-					this.billingConfigurationAzure.setClientSecret(azureAuthFile.getClientSecret());
-					this.billingConfigurationAzure.setTenantId(azureAuthFile.getTenantId());
-					this.billingConfigurationAzure.setSubscriptionId(azureAuthFile.getSubscriptionId());
-				} catch (IOException e) {
-					log.error("Cannot read configuration file", e);
-					throw e;
-				}
-				log.info("Configs from auth file are used");
-			} else {
-				log.info("Configs from yml file are used");
+		if (path.toFile().exists()) {
+			log.info("Read and override configs using auth file");
+			try {
+				AzureAuthFile azureAuthFile = new ObjectMapper().readValue(path.toFile(), AzureAuthFile.class);
+				this.billingConfigurationAzure.setClientId(azureAuthFile.getClientId());
+				this.billingConfigurationAzure.setClientSecret(azureAuthFile.getClientSecret());
+				this.billingConfigurationAzure.setTenantId(azureAuthFile.getTenantId());
+				this.billingConfigurationAzure.setSubscriptionId(azureAuthFile.getSubscriptionId());
+			} catch (IOException e) {
+				log.error("Cannot read configuration file", e);
+				throw e;
 			}
-
-			this.mongoDbBillingClient = new MongoDbBillingClient
-					(billingConfigurationAzure.getAggregationOutputMongoDataSource().getHost(),
-							billingConfigurationAzure.getAggregationOutputMongoDataSource().getPort(),
-							billingConfigurationAzure.getAggregationOutputMongoDataSource().getDatabase(),
-							billingConfigurationAzure.getAggregationOutputMongoDataSource().getUsername(),
-							billingConfigurationAzure.getAggregationOutputMongoDataSource().getPassword());
-			this.billingConfigurationAzure.getLogging().configure();
-		}
-	}
-
-	public static void main(String[] args) throws Exception {
-		if (args != null && args.length == 2) {
-			BillingSchedulerAzure billingSchedulerAzure = new BillingSchedulerAzure(args[1]);
-			billingSchedulerAzure.start();
-
+			log.info("Configs from auth file are used");
 		} else {
-			log.info("Wrong arguments. Please provide with path to billing configuration");
+			log.info("Configs from yml file are used");
 		}
+
+		this.mongoDbBillingClient = new MongoDbBillingClient
+				(billingConfigurationAzure.getAggregationOutputMongoDataSource().getHost(),
+						billingConfigurationAzure.getAggregationOutputMongoDataSource().getPort(),
+						billingConfigurationAzure.getAggregationOutputMongoDataSource().getDatabase(),
+						billingConfigurationAzure.getAggregationOutputMongoDataSource().getUsername(),
+						billingConfigurationAzure.getAggregationOutputMongoDataSource().getPassword());
 	}
 
+	@PostConstruct
 	public void start() {
 		if (billingConfigurationAzure.isBillingEnabled()) {
 			executorService.scheduleWithFixedDelay(new CalculateBilling(billingConfigurationAzure,
@@ -139,8 +120,7 @@ public class BillingSchedulerAzure {
 	@Slf4j
 	private static class CalculateBilling implements Runnable {
 		private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern
-				("yyyy-MM-dd'T'HH:mm:ss" +
-						".SSS'Z");
+				("yyyy-MM-dd'T'HH:mm:ss.SSS'Z");
 		private static final String SCHEDULER_ID = "azureBillingScheduler";
 		private AzureBillingDetailsService azureBillingDetailsService;
 		private BillingConfigurationAzure billingConfigurationAzure;
diff --git a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/BillingConfigurationAzure.java b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/BillingConfigurationAzure.java
index 4bd69ce..2130192 100644
--- a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/BillingConfigurationAzure.java
+++ b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/BillingConfigurationAzure.java
@@ -20,7 +20,11 @@
 package com.epam.dlab.billing.azure.config;
 
 import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
 
+@Configuration
+@ConfigurationProperties("dlab")
 @Data
 public class BillingConfigurationAzure {
     private long initialDelay;
@@ -43,6 +47,5 @@ public class BillingConfigurationAzure {
     private String sharedStorageAccountTagName;
     private String datalakeTagName;
 
-    private LoggingConfigurationFactory logging;
     private AggregationOutputMongoDataSource aggregationOutputMongoDataSource;
 }
diff --git a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/DlabConfiguration.java b/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/DlabConfiguration.java
deleted file mode 100644
index c1163c0..0000000
--- a/services/billing-azure/src/main/java/com/epam/dlab/billing/azure/config/DlabConfiguration.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package com.epam.dlab.billing.azure.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ConfigurationProperties("dlab")
-@Data
-public class DlabConfiguration {
-    private long initialDelay;
-    private long period;
-    private String clientId;
-    private String clientSecret;
-    private String tenantId;
-    private String subscriptionId;
-    private String authenticationFile;
-    private String offerNumber;
-    private String currency;
-    private String locale;
-    private String regionInfo;
-    private boolean billingEnabled;
-    private String ssnStorageAccountTagName;
-    private String sharedStorageAccountTagName;
-    private String datalakeTagName;
-    private LoggingConfigurationFactory logging;
-    private AggregationOutputMongoDataSource aggregationOutputMongoDataSource;
-}
diff --git a/services/billing-azure/src/main/resources/application.yml b/services/billing-azure/src/main/resources/application.yml
index 52e6862..962141e 100644
--- a/services/billing-azure/src/main/resources/application.yml
+++ b/services/billing-azure/src/main/resources/application.yml
@@ -8,8 +8,6 @@ spring:
       database: dlabdb
       port: 27017
       host: localhost
-dlab:
-
 
 server:
   port: 8088
@@ -33,4 +31,28 @@ keycloak:
   resource: sss
   credentials.secret: cf5a484b-039b-4161-8707-ad65c0f25962
   ssl-required: none
-  auth-server-url: http://52.11.45.11:8080/auth
\ No newline at end of file
+  auth-server-url: http://52.11.45.11:8080/auth
+
+dlab:
+  clientId: <CLIENT_ID>
+  clientSecret: <CLIENT_SECRET>
+  tenantId: <TENANT_ID>
+  subscriptionId: <SUBSCRIPTION_ID>
+  authenticationFile: <AUTHENTICATION_FILE>
+  # Billing configuration for RateCard API. For more details please see https://msdn.microsoft.com/en-us/library/mt219004.aspx
+  offerNumber: <OFFER_NUMBER>
+  currency: <CURRENCY>
+  locale: <LOCALE>
+  regionInfo: <REGION_INFO>
+  initialDelay: 10
+  period: 60
+  billingEnabled: false
+  aggregationOutputMongoDataSource:
+    host: localhost
+    port: 27017
+    username: admin
+    password: <MONGODB_PASSWORD>
+    database: dlabdb
+  ssnStorageAccountTagName: <AZURE_SSN_STORAGE_ACCOUNT_TAG>
+  sharedStorageAccountTagName: <AZURE_SHARED_STORAGE_ACCOUNT_TAG>
+  datalakeTagName: <AZURE_DATALAKE_TAG>
\ No newline at end of file


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