Skip to content

Commit

Permalink
[PLAT-9803] Allow AWS universe to use any AWS instance type if runtim…
Browse files Browse the repository at this point in the history
…e conf is set

Summary:
1. Retrieve pricing for all instance types (this doesn't increase file sizes by much).
2. When a runtime conf is set, all AWS instance types from pricing data will be created in the provider.
3. Ephemeral instance types or not are decided based on having a 'd' in the instance type code, which is the AWS convention. Also added the non-d named types to the ephemeral list.

Test Plan:
1. Add a unit test and verify a couple of instance types there.
2. Create an AWS universe with c6id.large and verify it is created with local instance storage and SQL queries work.
3. Spot check a few ephemeral instance types.

Reviewers: svarshney, yshchetinin

Reviewed By: svarshney

Subscribers: yugaware

Differential Revision: https://phorge.dev.yugabyte.com/D37692
  • Loading branch information
iSignal committed Sep 28, 2024
1 parent b0d4d63 commit 4bd9bd7
Show file tree
Hide file tree
Showing 108 changed files with 238 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import com.yugabyte.yw.cloud.PublicCloudConstants.Architecture;
import com.yugabyte.yw.common.PlatformServiceException;
import com.yugabyte.yw.common.config.GlobalConfKeys;
import com.yugabyte.yw.common.config.ProviderConfKeys;
import com.yugabyte.yw.common.config.RuntimeConfGetter;
import com.yugabyte.yw.models.InstanceType;
import com.yugabyte.yw.models.InstanceType.InstanceTypeDetails;
Expand All @@ -52,12 +53,14 @@
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import play.Environment;
import play.libs.Json;

@Slf4j
// TODO: move pricing data fetch to ybcloud.
@Singleton
public class AWSInitializer extends AbstractInitializer {
Expand All @@ -82,13 +85,16 @@ public void initialize(UUID customerUUID, UUID providerUUID) {
Provider provider = Provider.get(customerUUID, providerUUID);
InitializationContext context = new InitializationContext(provider);

LOG.info("Initializing AWS instance type and pricing info.");
LOG.info(
"Initializing AWS instance type and pricing info for regions {}",
Json.toJson(provider.getRegions()));
LOG.info("This operation may take a few minutes...");
// Get the price Json object stored locally at conf/aws_pricing.
for (Region region : provider.getRegions()) {
JsonNode regionJson = null;

String pricingFileName = "aws_pricing/" + region.getCode() + ".tar.gz";

try (InputStream pricingStream = environment.resourceAsStream(pricingFileName);
GzipCompressorInputStream gzipStream = new GzipCompressorInputStream(pricingStream);
TarArchiveInputStream regionStream = new TarArchiveInputStream(gzipStream)) {
Expand Down Expand Up @@ -553,6 +559,7 @@ private void storeInstanceTypeInfoToDB(InitializationContext context) {
// 12 x 2000 HDD
// 2 x 900 GB NVMe SSD
String[] parts = productAttrs.get("storage").replaceAll(",", "").split(" ");
log.trace("Storage details for instance type {} are {}", instanceTypeCode, parts);
if (parts.length < 4) {
if (!productAttrs.get("storage").equals("EBS only")) {
String msg =
Expand All @@ -570,19 +577,38 @@ private void storeInstanceTypeInfoToDB(InitializationContext context) {
volumeType = VolumeType.EBS;
}
} else {
if (parts[1].equals("x")) {

if (parts[1].toLowerCase().equals("x")) {
volumeCount = Integer.parseInt(parts[0]);
volumeSizeGB = Integer.parseInt(parts[2]);
if (parts[3].equals("GB")) {
volumeType = VolumeType.valueOf(parts[4].toUpperCase());
} else {
volumeType = VolumeType.valueOf(parts[3].toUpperCase());
try {
if (parts[3].equals("GB")) {
volumeType = VolumeType.valueOf(parts[4].toUpperCase());
} else {
volumeType = VolumeType.valueOf(parts[3].toUpperCase());
}
} catch (IllegalArgumentException ilex) {
LOG.warn(
"Unexpected error parsing instance type {} and volume types {}, skipping",
instanceTypeCode,
parts,
ilex);
continue;
}

} else {
volumeCount = 1;
volumeSizeGB = Integer.parseInt(parts[0]);
volumeType = VolumeType.valueOf(parts[2].toUpperCase());
try {
volumeType = VolumeType.valueOf(parts[2].toUpperCase());
} catch (IllegalArgumentException ilex) {
LOG.warn(
"Unexpected error parsing instance type {} and volume types {}, skipping",
instanceTypeCode,
parts,
ilex);
continue;
}
}
}

Expand Down Expand Up @@ -656,6 +682,11 @@ private boolean matches(Map<String, String> objAttrs, String name, FilterOp op,

private boolean isInstanceTypeSupported(
Provider provider, Map<String, String> productAttributes) {

if (runtimeConfGetter.getConfForScope(provider, ProviderConfKeys.allowUnsupportedInstances)) {
return true;
}

return InstanceType.getAWSInstancePrefixesSupported(provider, runtimeConfGetter).stream()
.anyMatch(productAttributes.getOrDefault("instanceType", "")::startsWith);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,21 @@ public void run() {
nodeIpCsv)
.processErrors();
} catch (Exception e) {
if (taskParams().type != DnsManager.DnsCommandType.Delete || !taskParams().isForceDelete) {
if (taskParams().type != DnsManager.DnsCommandType.Delete) {
throw e;
} else {
}
if (taskParams().isForceDelete) {
log.info(
"Ignoring error in dns record deletion for {} due to isForceDelete being set.",
taskParams().domainNamePrefix,
e);
} else if (e.getMessage().toLowerCase().contains("not found")) {
log.info(
"Ignoring error in dns record deletion for {} as it may have already been deleted.",
taskParams().domainNamePrefix,
e);
} else {
throw e;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@
public class UniverseDefinitionTaskParams extends UniverseTaskParams {

private static final Set<String> AWS_INSTANCE_WITH_EPHEMERAL_STORAGE_ONLY =
ImmutableSet.of("i3.", "c5d.", "c6gd.");
ImmutableSet.of(
"g5.", "g6.", "g6e.", "gr6.", "i3.", "i3en.", "i4g.", "i4i.", "im4gn.", "is4gen.", "p5.",
"p5e.", "trn1.", "trn1n.", "x1.", "x1e.");

public static final String UPDATING_TASK_UUID_FIELD = "updatingTaskUUID";
public static final String PLACEMENT_MODIFICATION_TASK_UUID_FIELD =
Expand Down Expand Up @@ -560,6 +562,13 @@ public static boolean hasEphemeralStorage(
if (instanceType.startsWith(prefix)) {
return true;
}
String[] typeParts = instanceType.split("\\.");
// AWS has a convention of using 'd' in the instance type for most local storage
// instance types. Ideally, we can figure this out from the pricing data instead
// so we don't have to hack this way.
if (typeParts.length >= 1 && typeParts[0].contains("d")) {
return true;
}
}
return false;
} else if (providerType == CloudType.gcp) {
Expand Down
9 changes: 8 additions & 1 deletion managed/src/main/resources/application.test.conf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ include classpath("application.common.conf")

db {
default.driver="org.h2.Driver"
default.url="jdbc:h2:mem:play-test;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1"
default.url="jdbc:h2:mem:play-test;USER=sa;PASSWORD=123;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1"
default.migration.locations=["common","h2"]
perf_advisor.driver="org.h2.Driver"
perf_advisor.url="jdbc:h2:mem:play-test;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1"
Expand Down Expand Up @@ -65,6 +65,12 @@ yb {
# Disabling for now, will add tests later.
verify_cluster_state = false
}

test {
# Log all test output to the file defined in logback-test.xml
logtofile = false
}

}

ybc {
Expand All @@ -81,6 +87,7 @@ runtime_config{
data_validation.enabled = true
}


# Only used by sbt swaggerGen
swagger.filter = "com.yugabyte.yw.common.swagger.PlatformSwaggerSpecFilter"
api.version = "v1"
Expand Down
Binary file modified managed/src/main/resources/aws_pricing/af-south-1-los-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/af-south-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-east-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-northeast-1-tpe-1.tar.gz
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-northeast-1.tar.gz
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-northeast-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-northeast-3.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-south-1-ccu-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-south-1-del-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-south-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-south-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-1-bkk-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-1-mnl-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-2-akl-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-2-per-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-3.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ap-southeast-4.tar.gz
Binary file not shown.
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ca-central-1-wl1-yto1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ca-central-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/ca-west-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-1-ham-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-1-waw-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-1-wl1-ber1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-1-wl1-dtm1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-1-wl1-muc1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-central-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-north-1-cph-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-north-1-hel-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-north-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-south-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-south-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-west-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-west-2-wl1-lon1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-west-2-wl1-man1.tar.gz
Binary file not shown.
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-west-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/eu-west-3.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/il-central-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/me-central-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/me-south-1-mct-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/me-south-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/sa-east-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-atl-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-bos-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-bue-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-chi-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-dfw-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-iah-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-lim-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-mci-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-mia-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-msp-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-nyc-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-phl-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-qro-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-scl-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-atl1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-bna1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-chi1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-clt1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-dfw1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-dtw1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-iah1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-mia1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-msp1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-nyc1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-tpa1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1-was1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1-wl1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-east-2.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-gov-east-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-gov-west-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-den-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-hnl-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-las-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-lax-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-pdx-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-phx-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-sea-1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-wl1-den1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-wl1-las1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-wl1-lax1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-wl1-phx1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-wl1-sea1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2-wl1.tar.gz
Binary file not shown.
Binary file modified managed/src/main/resources/aws_pricing/us-west-2.tar.gz
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"date": "2024-06-12"
"date": "2024-09-22"
}
4 changes: 4 additions & 0 deletions managed/src/main/resources/reference.conf
Original file line number Diff line number Diff line change
Expand Up @@ -1313,6 +1313,10 @@ yb {
enabled = true
enabled = ${?ENV_PROXY_SELECTOR_ENABLED}
}

test {
logtofile = false
}
}

ybc {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package com.yugabyte.yw.cloud.aws;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import com.yugabyte.yw.commissioner.Common.CloudType;
import com.yugabyte.yw.common.FakeDBApplication;
import com.yugabyte.yw.common.ModelFactory;
import com.yugabyte.yw.forms.UniverseDefinitionTaskParams;
import com.yugabyte.yw.models.AvailabilityZone;
import com.yugabyte.yw.models.Customer;
import com.yugabyte.yw.models.InstanceType;
import com.yugabyte.yw.models.Provider;
import com.yugabyte.yw.models.ProviderDetails;
import com.yugabyte.yw.models.ProviderDetails.CloudInfo;
import com.yugabyte.yw.models.Region;
import com.yugabyte.yw.models.RuntimeConfigEntry;
import com.yugabyte.yw.models.helpers.provider.AWSCloudInfo;
import java.util.Arrays;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import org.junit.Test;

@Slf4j
public class AWSInitializerTest extends FakeDBApplication {

private Customer customer;
private Provider defaultProvider;
private Region defaultRegion;
AWSInitializer awsInitializer;

@Before
public void setup() {
customer = ModelFactory.testCustomer();
defaultProvider = ModelFactory.awsProvider(customer);
defaultRegion = new Region();
defaultRegion.setProvider(defaultProvider);
defaultRegion.setCode("us-east-2");
defaultRegion.setName("us-east-2");
AvailabilityZone az = new AvailabilityZone();
az.setCode("us-east-2a");
az.setName("us-east-2a");
defaultRegion.setZones(Arrays.asList(az));
defaultProvider.getRegions().add(defaultRegion);
ProviderDetails providerDetails = new ProviderDetails();
CloudInfo cloudInfo = new CloudInfo();
cloudInfo.aws = new AWSCloudInfo();
cloudInfo.aws.setAwsAccessKeyID("accessKey");
cloudInfo.aws.setAwsAccessKeySecret("accessKeySecret");
providerDetails.setCloudInfo(cloudInfo);
defaultProvider.setDetails(providerDetails);
defaultProvider.save();
}

@Test
public void testAWSInitializerAllInstanceTypes() {

assertTrue(
UniverseDefinitionTaskParams.hasEphemeralStorage(CloudType.aws, "x2gd.12xlarge", null));
assertTrue(
UniverseDefinitionTaskParams.hasEphemeralStorage(CloudType.aws, "i3en.2xlarge", null));

RuntimeConfigEntry.upsertGlobal("yb.internal.allow_unsupported_instances", "true");
awsInitializer = app.injector().instanceOf(AWSInitializer.class);
awsInitializer.initialize(customer.getUuid(), defaultProvider.getUuid());

InstanceType c6a4x = InstanceType.get(defaultProvider.getUuid(), "c6a.4xlarge");
assertEquals(16, (int) c6a4x.getNumCores().doubleValue());
assertEquals(32, (int) c6a4x.getMemSizeGB().doubleValue());

InstanceType c6id4x = InstanceType.get(defaultProvider.getUuid(), "c6id.4xlarge");
assertEquals(16, (int) c6id4x.getNumCores().doubleValue());
assertEquals(32, (int) c6id4x.getMemSizeGB().doubleValue());
assertEquals(1, c6id4x.getInstanceTypeDetails().volumeDetailsList.size());
var volDetailsList = c6id4x.getInstanceTypeDetails().volumeDetailsList.get(0);
assertEquals(volDetailsList.volumeType, InstanceType.VolumeType.NVME);
assertEquals(950, volDetailsList.volumeSizeGB.intValue());

InstanceType g612x = InstanceType.get(defaultProvider.getUuid(), "g6.12xlarge");
assertEquals(48, (int) g612x.getNumCores().doubleValue());
assertEquals(192, (int) g612x.getMemSizeGB().doubleValue());
assertEquals(4, g612x.getInstanceTypeDetails().volumeDetailsList.size());
volDetailsList = g612x.getInstanceTypeDetails().volumeDetailsList.get(0);
assertEquals(volDetailsList.volumeType, InstanceType.VolumeType.NVME);
assertEquals(940, volDetailsList.volumeSizeGB.intValue());
}

@Test
public void testAWSInitializerAllowedInstanceTypes() {
RuntimeConfigEntry.upsertGlobal("yb.internal.allow_unsupported_instances", "false");
awsInitializer = app.injector().instanceOf(AWSInitializer.class);
awsInitializer.initialize(customer.getUuid(), defaultProvider.getUuid());

InstanceType c6a4x = InstanceType.get(defaultProvider.getUuid(), "c6a.4xlarge");
assertEquals(16, (int) c6a4x.getNumCores().doubleValue());
assertEquals(32, (int) c6a4x.getMemSizeGB().doubleValue());

InstanceType c6id4x = null;
try {
c6id4x = InstanceType.get(defaultProvider.getUuid(), "c6id.4xlarge");
} catch (Exception ex) {
// ignore
}
assertEquals(null, c6id4x);
}
}
39 changes: 38 additions & 1 deletion managed/src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<configuration>

<property name="cloud" value="${yb.cloud.enabled}"/>
<property name="LOGTESTTOFILE" value="${yb.test.logtofile:-false}"/>

<conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" />


Expand Down Expand Up @@ -53,6 +55,20 @@
<level>${APPLICATION_CONSOLE_LOG_LEVEL:-${applicationLogLevel:-DEBUG}}</level>
</filter>
</appender>

<if condition='property("LOGTESTTOFILE").equals("true")'>
<then>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<encoder>
<pattern>%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC} %X{logType} %-5coloredLevel %X{correlation-id} %F:%L [%thread] %logger %msg%n</pattern>
</encoder>
<file>/tmp/yw.test.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>${APPLICATION_CONSOLE_LOG_LEVEL:-${applicationLogLevel:-DEBUG}}</level>
</filter>
</appender>
</then>
</if>
</else>
</if>

Expand All @@ -61,6 +77,15 @@
<includeCallerData>true</includeCallerData>
</appender>

<if condition='property("LOGTESTTOFILE").equals("true")'>
<then>
<appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE" />
<includeCallerData>true</includeCallerData>
</appender>
</then>
</if>

<logger name="play" level="INFO" />
<logger name="org.yb" level="INFO" />
<logger name="db.migration" level="INFO" />
Expand All @@ -73,8 +98,20 @@

<logger name="oshi.software.os.linux.LinuxFileSystem" level="ERROR" />


<if condition='property("LOGTESTTOFILE").equals("true")'>
<then>
<root level="WARN">
<appender-ref ref="ASYNCSTDOUT" />
</root>
<appender-ref ref="ASYNCFILE" />
</root>
</then>
<else>
<root level="WARN">
<appender-ref ref="ASYNCSTDOUT" />
</root>
</else>
</if>


</configuration>
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,13 @@ import ConnectionPoolDisabled from '../../../redesign/assets/connection-pool-dis

import './UniverseDetail.scss';

const INSTANCE_WITH_EPHEMERAL_STORAGE_ONLY = ['i3', 'c5d', 'c6gd'];
const INSTANCE_WITH_EPHEMERAL_STORAGE_ONLY = ['g5','g6','g6e',
'gr6','i3','i3en','i4g','i4i','im4gn',
'is4gen','p5','p5e','trn1','trn1n','x1','x1e'];

export const isEphemeralAwsStorageInstance = (instanceType) => {
return INSTANCE_WITH_EPHEMERAL_STORAGE_ONLY.includes(instanceType?.split?.('.')[0]);
return INSTANCE_WITH_EPHEMERAL_STORAGE_ONLY.includes(instanceType?.split?.('.')[0]) ||
instanceType?.split?.('.')[0].includes('d');
};

class UniverseDetail extends Component {
Expand Down
Loading

0 comments on commit 4bd9bd7

Please sign in to comment.