Skip to content

Commit

Permalink
[#9903] add system metric host management function
Browse files Browse the repository at this point in the history
  • Loading branch information
donghun-cho committed May 2, 2023
1 parent 6267cb9 commit 6c48ab0
Show file tree
Hide file tree
Showing 21 changed files with 786 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.navercorp.pinpoint.metric.web;


import com.navercorp.pinpoint.metric.web.config.MetricWebMysqlDaoConfiguration;
import com.navercorp.pinpoint.metric.web.config.MetricWebPinotDaoConfiguration;
import com.navercorp.pinpoint.pinot.config.PinotConfiguration;
import org.springframework.context.annotation.ComponentScan;
Expand All @@ -14,7 +15,8 @@
@Import({
WebMetricPropertySources.class,
MetricWebPinotDaoConfiguration.class,
PinotConfiguration.class
PinotConfiguration.class,
MetricWebMysqlDaoConfiguration.class
})
@Profile("metric")
public class MetricWebApp {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package com.navercorp.pinpoint.metric.web.authorization.controller;

import com.navercorp.pinpoint.metric.web.service.SystemMetricHostExclusionService;
import com.navercorp.pinpoint.pinot.tenant.TenantProvider;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/admin/systemMetric")
public class SystemMetricHostExclusionController {
private final Logger logger = LogManager.getLogger(this.getClass());

Check warning on line 14 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L14

Added line #L14 was not covered by tests

private final SystemMetricHostExclusionService systemMetricHostExclusionService;
private final TenantProvider tenantProvider;

public SystemMetricHostExclusionController(SystemMetricHostExclusionService systemMetricHostExclusionService, TenantProvider tenantProvider) {
this.systemMetricHostExclusionService = systemMetricHostExclusionService;
this.tenantProvider = tenantProvider;
}

Check warning on line 22 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L19-L22

Added lines #L19 - L22 were not covered by tests

@RequestMapping(value = "/hostGroup/addExclusion")
public String excludeHostGroup(@RequestParam("hostGroupName") String hostGroupName) {
logger.info("add hostGroup exclusion - hostGroupName: [{}]", hostGroupName);

Check warning on line 26 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L26

Added line #L26 was not covered by tests
try {
String tenantId = tenantProvider.getTenantId();
systemMetricHostExclusionService.insertHostGroupExclusion(tenantId, hostGroupName);
return "OK";
} catch (Exception e) {
logger.error("error while excluding hostGroupName", e);
return e.getMessage();

Check warning on line 33 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L28-L33

Added lines #L28 - L33 were not covered by tests
}
}

@RequestMapping(value = "/hostGroup/host/addExclusion")
public String excludeHostGroup(@RequestParam("hostGroupName") String hostGroupName,
@RequestParam("hostName") String hostName) {
logger.info("add host exclusion - hostGroupName: [{}], hostName: [{}]", hostGroupName, hostName);

Check warning on line 40 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L40

Added line #L40 was not covered by tests
try {
String tenantId = tenantProvider.getTenantId();
systemMetricHostExclusionService.insertHostExclusion(tenantId, hostGroupName, hostName);
return "OK";
} catch (Exception e) {
logger.error("error while excluding hostName", e);
return e.getMessage();

Check warning on line 47 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L42-L47

Added lines #L42 - L47 were not covered by tests
}
}

@RequestMapping(value = "/hostGroup/removeExclusion")
public String acceptHostGroup(@RequestParam("hostGroupName") String hostGroupName) {
logger.info("remove host group exclusion - hostGroupName: [{}]", hostGroupName);

Check warning on line 53 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L53

Added line #L53 was not covered by tests
try {
String tenantId = tenantProvider.getTenantId();
systemMetricHostExclusionService.deleteHostGroupExclusion(tenantId, hostGroupName);
return "OK";
} catch (Exception e) {
logger.error("error while accepting hostGroupName", e);
return e.getMessage();

Check warning on line 60 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L55-L60

Added lines #L55 - L60 were not covered by tests
}
}

@RequestMapping(value = "/hostGroup/host/removeExclusion")
public String acceptHostGroup(@RequestParam("hostGroupName") String hostGroupName,
@RequestParam("hostName") String hostName) {
logger.info("remove host exclusion - hostGroupName: [{}], hostName: [{}]", hostGroupName, hostName);

Check warning on line 67 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L67

Added line #L67 was not covered by tests
try {
String tenantId = tenantProvider.getTenantId();
systemMetricHostExclusionService.deleteHostExclusion(tenantId, hostGroupName, hostName);
return "OK";
} catch (Exception e) {
logger.error("error while accepting hostName", e);
return e.getMessage();

Check warning on line 74 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L69-L74

Added lines #L69 - L74 were not covered by tests
}
}

@RequestMapping(value = "/hostGroup/removeUnusedExclusions")
public String cleanupUnusedExclusions(@RequestParam("hostGroupName") String hostGroupName) {
logger.info("remove unused hostGroup exclusion and host exclusions - hostGroupName: [{}]", hostGroupName);

Check warning on line 80 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L80

Added line #L80 was not covered by tests
try {
String tenantId = tenantProvider.getTenantId();
systemMetricHostExclusionService.deleteUnusedHostExclusion(tenantId, hostGroupName);
return "OK";
} catch (Exception e) {
logger.error("error while removing unused exclusions", e);
return e.getMessage();

Check warning on line 87 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/authorization/controller/SystemMetricHostExclusionController.java#L82-L87

Added lines #L82 - L87 were not covered by tests
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.navercorp.pinpoint.metric.web.cache;

import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

@Configuration
@EnableCaching
public class MetricWebCacheConfiguration {

Check warning on line 14 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java#L14

Added line #L14 was not covered by tests

public static final String METRIC_HOST_GROUP_EXCLUSION_CACHE_NAME = "metricHostGroupExclusion";
public static final String METRIC_HOST_EXCLUSION_CACHE_NAME = "metricHostExclusion";

@Bean
public CacheManager metricHostGroupExclusion() {
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(METRIC_HOST_GROUP_EXCLUSION_CACHE_NAME);
caffeineCacheManager.setCaffeine(Caffeine.newBuilder()
.expireAfterWrite(300, TimeUnit.SECONDS));
return caffeineCacheManager;

Check warning on line 24 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java#L21-L24

Added lines #L21 - L24 were not covered by tests
}

@Bean
public CacheManager metricHostExclusion() {
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(METRIC_HOST_EXCLUSION_CACHE_NAME);
caffeineCacheManager.setCaffeine(Caffeine.newBuilder()
.expireAfterWrite(300, TimeUnit.SECONDS));
return caffeineCacheManager;

Check warning on line 32 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/cache/MetricWebCacheConfiguration.java#L29-L32

Added lines #L29 - L32 were not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.navercorp.pinpoint.metric.web.config;

import com.navercorp.pinpoint.metric.collector.config.MyBatisRegistryHandler;
import com.navercorp.pinpoint.pinot.mybatis.MyBatisConfiguration;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;

import javax.sql.DataSource;

@org.springframework.context.annotation.Configuration
public class MetricWebMysqlDaoConfiguration {
private final Logger logger = LogManager.getLogger(MetricWebMysqlDaoConfiguration.class);

Check warning on line 20 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L19-L20

Added lines #L19 - L20 were not covered by tests

@Bean
public SqlSessionFactoryBean metricSqlSessionFactory(
@Qualifier("dataSource") DataSource dataSource,
@Value("classpath*:/pinot-web/mapper/mysql/*Mapper.xml") Resource[] mappers) {

for (Resource mapper : mappers) {
logger.info("Mapper location: {}", mapper.getDescription());

Check warning on line 28 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L28

Added line #L28 was not covered by tests
}

SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(mappers);

Check warning on line 33 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L31-L33

Added lines #L31 - L33 were not covered by tests

Configuration config = MyBatisConfiguration.defaultConfiguration();
sessionFactoryBean.setConfiguration(config);

Check warning on line 36 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L35-L36

Added lines #L35 - L36 were not covered by tests

MyBatisRegistryHandler registry = registryHandler();
registry.registerTypeAlias(config.getTypeAliasRegistry());

Check warning on line 39 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L38-L39

Added lines #L38 - L39 were not covered by tests

sessionFactoryBean.setFailFast(true);

Check warning on line 41 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L41

Added line #L41 was not covered by tests

return sessionFactoryBean;

Check warning on line 43 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L43

Added line #L43 was not covered by tests
}

private MyBatisRegistryHandler registryHandler() {
return new WebRegistryHandler();

Check warning on line 47 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L47

Added line #L47 was not covered by tests
}

@Bean
public SqlSessionTemplate metricSqlSessionTemplate(
@Qualifier("metricSqlSessionFactory") SqlSessionFactory sessionFactory) {
return new SqlSessionTemplate(sessionFactory);

Check warning on line 53 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/config/MetricWebMysqlDaoConfiguration.java#L53

Added line #L53 was not covered by tests
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import com.navercorp.pinpoint.metric.web.model.MetricDataSearchKey;
import com.navercorp.pinpoint.metric.web.model.MetricInfo;
import com.navercorp.pinpoint.metric.web.model.SystemMetricData;
import com.navercorp.pinpoint.metric.web.model.SystemMetricHostGroupExclusionData;
import com.navercorp.pinpoint.metric.web.service.SystemMetricDataService;
import com.navercorp.pinpoint.metric.web.service.SystemMetricHostExclusionService;
import com.navercorp.pinpoint.metric.web.service.SystemMetricHostInfoService;
import com.navercorp.pinpoint.metric.web.service.YMLSystemMetricBasicGroupManager;
import com.navercorp.pinpoint.metric.web.util.Range;
Expand All @@ -46,17 +48,20 @@
public class SystemMetricController {
private final SystemMetricDataService systemMetricDataService;
private final SystemMetricHostInfoService systemMetricHostInfoService;
private final SystemMetricHostExclusionService systemMetricHostExclusionService;
private final YMLSystemMetricBasicGroupManager systemMetricBasicGroupManager;
private final TenantProvider tenantProvider;

private final TimeWindowSampler DEFAULT_TIME_WINDOW_SAMPLER = new TimeWindowSlotCentricSampler(10000L, 200);

public SystemMetricController(SystemMetricDataService systemMetricDataService,
SystemMetricHostInfoService systemMetricHostInfoService,
SystemMetricHostExclusionService systemMetricHostExclusionService,
YMLSystemMetricBasicGroupManager systemMetricBasicGroupManager,
TenantProvider tenantProvider) {
this.systemMetricDataService = Objects.requireNonNull(systemMetricDataService, "systemMetricService");
this.systemMetricHostInfoService = Objects.requireNonNull(systemMetricHostInfoService, "systemMetricHostInfoService");
this.systemMetricHostExclusionService = Objects.requireNonNull(systemMetricHostExclusionService, "systemMetricHostExclusionService");

Check warning on line 64 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/controller/SystemMetricController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/controller/SystemMetricController.java#L64

Added line #L64 was not covered by tests
this.systemMetricBasicGroupManager = Objects.requireNonNull(systemMetricBasicGroupManager, "systemMetricBasicGroupManager");
this.tenantProvider = Objects.requireNonNull(tenantProvider, "tenantProvider");
}
Expand Down Expand Up @@ -102,4 +107,10 @@ public SystemMetricView getCollectedMetricData(@RequestParam("hostGroupName") St
SystemMetricData<? extends Number> systemMetricData = systemMetricDataService.getCollectedMetricData(metricDataSearchKey, timeWindow, tagList);
return new SystemMetricView(systemMetricData);
}

@GetMapping(value = "/hostGroup/exclusionInfo")
public SystemMetricHostGroupExclusionData getHostGroupExclusionInfo(@RequestParam("hostGroupName") String hostGroupName) {
String tenantId = tenantProvider.getTenantId();
return systemMetricHostExclusionService.getHostGroupExclusionInfo(tenantId, hostGroupName);

Check warning on line 114 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/controller/SystemMetricController.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/controller/SystemMetricController.java#L113-L114

Added lines #L113 - L114 were not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.navercorp.pinpoint.metric.web.dao;

import java.util.List;

public interface SystemMetricHostExclusionDao {

List<String> selectExcludedHostGroupNameList(String tenantId);

void insertMetricHostGroupExclusion(String tenantId, String hostGroupName);

void deleteMetricHostGroupExclusion(String tenantId, String hostGroupName);

List<String> selectExcludedHostNameList(String tenantId, String hostGroupName);

void insertMetricHostExclusion(String tenantId, String hostGroupName, String hostName);

void deleteMetricHostExclusion(String tenantId, String hostGroupName, String hostName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,16 @@ public class HostInfoSearchKey {

private final String tenantId;
private final String hostGroupName;
private final String hostName;

public HostInfoSearchKey(String tenantId, String hostGroupName) {
public HostInfoSearchKey (String tenantId, String hostGroupName) {
this(tenantId, hostGroupName, "");
}

Check warning on line 32 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java#L31-L32

Added lines #L31 - L32 were not covered by tests

public HostInfoSearchKey(String tenantId, String hostGroupName, String hostName) {

Check warning on line 34 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java#L34

Added line #L34 was not covered by tests
this.tenantId = Objects.requireNonNull(tenantId, "tenantId");
this.hostGroupName = Objects.requireNonNull(hostGroupName, "hostGroupName");
this.hostName = Objects.requireNonNull(hostName, "hostName");

Check warning on line 37 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java#L37

Added line #L37 was not covered by tests
}

public String getTenantId() {
Expand All @@ -38,4 +44,8 @@ public String getTenantId() {
public String getHostGroupName() {
return hostGroupName;
}

public String getHostName() {
return hostName;

Check warning on line 49 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/model/HostInfoSearchKey.java#L49

Added line #L49 was not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.navercorp.pinpoint.metric.web.dao.mysql;

import com.navercorp.pinpoint.metric.web.dao.SystemMetricHostExclusionDao;
import com.navercorp.pinpoint.metric.web.dao.model.HostInfoSearchKey;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Objects;

@Primary
@Repository
public class MysqlSystemMetricHostExclusionDao implements SystemMetricHostExclusionDao {

private static final String NAMESPACE = MysqlSystemMetricHostExclusionDao.class.getName() + ".";

Check warning on line 17 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L17

Added line #L17 was not covered by tests

private final SqlSessionTemplate sqlMetricSessionTemplate;

public MysqlSystemMetricHostExclusionDao(@Qualifier("metricSqlSessionTemplate") SqlSessionTemplate sqlMetricSessionTemplate) {
this.sqlMetricSessionTemplate = Objects.requireNonNull(sqlMetricSessionTemplate, "sqlSessionTemplate");
}

Check warning on line 23 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L21-L23

Added lines #L21 - L23 were not covered by tests

@Override
public List<String> selectExcludedHostGroupNameList(String tenantId) {
return sqlMetricSessionTemplate.selectList(NAMESPACE + "selectExcludedHostGroupNames", tenantId);

Check warning on line 27 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L27

Added line #L27 was not covered by tests
}

@Override
public void insertMetricHostGroupExclusion(String tenantId, String hostGroupName) {
sqlMetricSessionTemplate.insert(NAMESPACE + "insertHostGroupExclusion", new HostInfoSearchKey(tenantId, hostGroupName));
}

Check warning on line 33 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L32-L33

Added lines #L32 - L33 were not covered by tests

@Override
public void deleteMetricHostGroupExclusion(String tenantId, String hostGroupName) {
sqlMetricSessionTemplate.delete(NAMESPACE + "deleteHostGroupExclusion", new HostInfoSearchKey(tenantId, hostGroupName));
}

Check warning on line 38 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L37-L38

Added lines #L37 - L38 were not covered by tests

@Override
public List<String> selectExcludedHostNameList(String tenantId, String hostGroupName) {
return sqlMetricSessionTemplate.selectList(NAMESPACE + "selectExcludedHostNames", new HostInfoSearchKey(tenantId, hostGroupName));

Check warning on line 42 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L42

Added line #L42 was not covered by tests
}

@Override
public void insertMetricHostExclusion(String tenantId, String hostGroupName, String hostName) {
sqlMetricSessionTemplate.insert(NAMESPACE + "insertHostExclusion", new HostInfoSearchKey(tenantId, hostGroupName, hostName));
}

Check warning on line 48 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L47-L48

Added lines #L47 - L48 were not covered by tests

@Override
public void deleteMetricHostExclusion(String tenantId, String hostGroupName, String hostName) {
sqlMetricSessionTemplate.delete(NAMESPACE + "deleteHostExclusion", new HostInfoSearchKey(tenantId, hostGroupName, hostName));
}

Check warning on line 53 in metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java

View check run for this annotation

Codecov / codecov/patch

metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/dao/mysql/MysqlSystemMetricHostExclusionDao.java#L52-L53

Added lines #L52 - L53 were not covered by tests
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.navercorp.pinpoint.metric.web.model;

public class SystemMetricHostExclusionData {
private final String hostName;
private final boolean excluded;

public SystemMetricHostExclusionData(String hostName, boolean excluded) {
this.hostName = hostName;
this.excluded = excluded;
}

public String getHostName() {
return hostName;
}

public boolean isExcluded() {
return excluded;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.navercorp.pinpoint.metric.web.model;

import java.util.List;
import java.util.Objects;

public class SystemMetricHostGroupExclusionData {
private final String hostGroupName;
private final boolean excluded;
private final List<String> excludedHostNameList;
private final List<SystemMetricHostExclusionData> hostExclusionDataList;

public SystemMetricHostGroupExclusionData(String hostGroupName, boolean excluded, List<String> excludedHostNameList, List<SystemMetricHostExclusionData> hostExclusionData) {
this.hostGroupName = Objects.requireNonNull(hostGroupName, "hostGroupName");
this.excluded = Objects.requireNonNull(excluded, "excluded");
this.excludedHostNameList = Objects.requireNonNull(excludedHostNameList, "excludedHostNameList");
this.hostExclusionDataList = Objects.requireNonNull(hostExclusionData, "hostExclusionData");
}

public String getHostGroupName() {
return hostGroupName;
}

public boolean isExcluded() {
return excluded;
}

public List<String> getExcludedHostNameList() {
return excludedHostNameList;
}

public List<SystemMetricHostExclusionData> getHostExclusionDataList() {
return hostExclusionDataList;
}
}

0 comments on commit 6c48ab0

Please sign in to comment.