Skip to content

Commit

Permalink
[PLAT-12733] Kubernetes overrides in v2 api
Browse files Browse the repository at this point in the history
Summary: Implemented kubernetes overrides v2 api

Test Plan: unit tests

Reviewers: sneelakantan, #yba-api-review

Reviewed By: sneelakantan, #yba-api-review

Subscribers: yugaware

Differential Revision: https://phorge.dev.yugabyte.com/D36636
  • Loading branch information
shubin-yb committed Jul 22, 2024
1 parent 2becb46 commit 1b9be2e
Show file tree
Hide file tree
Showing 10 changed files with 249 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import api.v2.models.UniverseDeleteSpec;
import api.v2.models.UniverseEditEncryptionInTransit;
import api.v2.models.UniverseEditGFlags;
import api.v2.models.UniverseEditKubernetesOverrides;
import api.v2.models.UniverseEditSpec;
import api.v2.models.UniverseRestart;
import api.v2.models.UniverseRollbackUpgradeReq;
Expand Down Expand Up @@ -64,7 +65,7 @@ public YBATask deleteCluster(
public YBATask editGFlags(
Request request, UUID cUUID, UUID uniUUID, UniverseEditGFlags universeEditGFlags)
throws Exception {
return universeUpgradeHandler.editGFlags(request, cUUID, uniUUID, universeEditGFlags);
return universeUpgradeHandler.editGFlags(cUUID, uniUUID, universeEditGFlags);
}

@Override
Expand All @@ -78,66 +79,72 @@ public YBATask deleteUniverse(
public YBATask startSoftwareUpgrade(
Request request, UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradeStart uniUpgrade)
throws Exception {
return universeUpgradeHandler.startSoftwareUpgrade(request, cUUID, uniUUID, uniUpgrade);
return universeUpgradeHandler.startSoftwareUpgrade(cUUID, uniUUID, uniUpgrade);
}

@Override
public YBATask finalizeSoftwareUpgrade(
Request request, UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradeFinalize finalizeInfo)
throws Exception {
return universeUpgradeHandler.finalizeSoftwareUpgrade(request, cUUID, uniUUID, finalizeInfo);
return universeUpgradeHandler.finalizeSoftwareUpgrade(cUUID, uniUUID, finalizeInfo);
}

@Override
public UniverseSoftwareUpgradeFinalizeInfo getFinalizeSoftwareUpgradeInfo(
Request request, UUID cUUID, UUID uniUUID) throws Exception {
return universeUpgradeHandler.getSoftwareUpgradeFinalizeInfo(request, cUUID, uniUUID);
return universeUpgradeHandler.getSoftwareUpgradeFinalizeInfo(cUUID, uniUUID);
}

@Override
public YBATask startThirdPartySoftwareUpgrade(
Request request, UUID cUUID, UUID uniUUID, UniverseThirdPartySoftwareUpgradeStart uniUpgrade)
throws Exception {
return universeUpgradeHandler.startThirdPartySoftwareUpgrade(
request, cUUID, uniUUID, uniUpgrade);
return universeUpgradeHandler.startThirdPartySoftwareUpgrade(cUUID, uniUUID, uniUpgrade);
}

@Override
public YBATask rollbackSoftwareUpgrade(
Request request, UUID cUUID, UUID uniUUID, UniverseRollbackUpgradeReq req) throws Exception {
return universeUpgradeHandler.rollbackSoftwareUpgrade(request, cUUID, uniUUID, req);
return universeUpgradeHandler.rollbackSoftwareUpgrade(cUUID, uniUUID, req);
}

@Override
public UniverseSoftwareUpgradePrecheckResp precheckSoftwareUpgrade(
Request request, UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradePrecheckReq req)
throws Exception {
return universeUpgradeHandler.precheckSoftwareUpgrade(request, cUUID, uniUUID, req);
return universeUpgradeHandler.precheckSoftwareUpgrade(cUUID, uniUUID, req);
}

@Override
public YBATask restartUniverse(
Request request, UUID cUUID, UUID uniUUID, UniverseRestart uniUpgrade) throws Exception {
return universeUpgradeHandler.restartUniverse(request, cUUID, uniUUID, uniUpgrade);
return universeUpgradeHandler.restartUniverse(cUUID, uniUUID, uniUpgrade);
}

@Override
public YBATask systemdEnable(
Request request, UUID cUUID, UUID uniUUID, UniverseSystemdEnableStart systemd)
throws Exception {
return universeUpgradeHandler.systemdEnable(request, cUUID, uniUUID, systemd);
return universeUpgradeHandler.systemdEnable(cUUID, uniUUID, systemd);
}

@Override
public YBATask encryptionInTransitToggle(
Request request, UUID cUUID, UUID uniUUID, UniverseEditEncryptionInTransit spec)
throws Exception {
return universeUpgradeHandler.tlsToggle(request, cUUID, uniUUID, spec);
return universeUpgradeHandler.tlsToggle(cUUID, uniUUID, spec);
}

@Override
public YBATask encryptionInTransitCertRotate(
Request request, UUID cUUID, UUID uniUUID, UniverseCertRotateSpec spec) throws Exception {
return universeUpgradeHandler.certRotate(request, cUUID, uniUUID, spec);
return universeUpgradeHandler.certRotate(cUUID, uniUUID, spec);
}

@Override
public YBATask editKubernetesOverrides(
Request request, UUID cUUID, UUID uniUUID, UniverseEditKubernetesOverrides spec)
throws Exception {
return universeUpgradeHandler.editKubernetesOverrides(cUUID, uniUUID, spec);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import api.v2.mappers.UniverseCertsRotateParamsMapper;
import api.v2.mappers.UniverseDefinitionTaskParamsMapper;
import api.v2.mappers.UniverseEditGFlagsMapper;
import api.v2.mappers.UniverseEditKubernetesOverridesParamsMapper;
import api.v2.mappers.UniverseRestartParamsMapper;
import api.v2.mappers.UniverseRollbackUpgradeMapper;
import api.v2.mappers.UniverseSoftwareFinalizeMapper;
Expand All @@ -18,6 +19,7 @@
import api.v2.models.UniverseCertRotateSpec;
import api.v2.models.UniverseEditEncryptionInTransit;
import api.v2.models.UniverseEditGFlags;
import api.v2.models.UniverseEditKubernetesOverrides;
import api.v2.models.UniverseRestart;
import api.v2.models.UniverseRollbackUpgradeReq;
import api.v2.models.UniverseSoftwareUpgradeFinalize;
Expand All @@ -42,6 +44,7 @@
import com.yugabyte.yw.forms.CertsRotateParams;
import com.yugabyte.yw.forms.FinalizeUpgradeParams;
import com.yugabyte.yw.forms.GFlagsUpgradeParams;
import com.yugabyte.yw.forms.KubernetesOverridesUpgradeParams;
import com.yugabyte.yw.forms.RestartTaskParams;
import com.yugabyte.yw.forms.RollbackUpgradeParams;
import com.yugabyte.yw.forms.SoftwareUpgradeParams;
Expand All @@ -57,7 +60,6 @@
import com.yugabyte.yw.models.extended.SoftwareUpgradeInfoResponse;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import play.mvc.Http;

@Singleton
@Slf4j
Expand All @@ -66,8 +68,7 @@ public class UniverseUpgradesManagementHandler extends ApiControllerUtils {
@Inject public Commissioner commissioner;
@Inject private RuntimeConfGetter confGetter;

public YBATask editGFlags(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseEditGFlags editGFlags)
public YBATask editGFlags(UUID cUUID, UUID uniUUID, UniverseEditGFlags editGFlags)
throws JsonProcessingException {
log.info("Starting v2 edit GFlags with {}", editGFlags);

Expand Down Expand Up @@ -96,7 +97,7 @@ public YBATask editGFlags(
}

public YBATask startSoftwareUpgrade(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradeStart upgradeStart)
UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradeStart upgradeStart)
throws JsonProcessingException {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);
Expand All @@ -122,7 +123,7 @@ public YBATask startSoftwareUpgrade(
}

public YBATask finalizeSoftwareUpgrade(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradeFinalize upgradeStart)
UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradeFinalize upgradeStart)
throws JsonProcessingException {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);
Expand All @@ -141,7 +142,7 @@ public YBATask finalizeSoftwareUpgrade(
}

public UniverseSoftwareUpgradeFinalizeInfo getSoftwareUpgradeFinalizeInfo(
Http.Request request, UUID cUUID, UUID uniUUID) {
UUID cUUID, UUID uniUUID) {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe.getOrBadRequest(uniUUID, customer);

Expand All @@ -153,10 +154,7 @@ public UniverseSoftwareUpgradeFinalizeInfo getSoftwareUpgradeFinalizeInfo(
}

public YBATask startThirdPartySoftwareUpgrade(
Http.Request request,
UUID cUUID,
UUID uniUUID,
UniverseThirdPartySoftwareUpgradeStart upgradeStart)
UUID cUUID, UUID uniUUID, UniverseThirdPartySoftwareUpgradeStart upgradeStart)
throws JsonProcessingException {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);
Expand All @@ -176,8 +174,7 @@ public YBATask startThirdPartySoftwareUpgrade(
return ybaTask;
}

public YBATask rollbackSoftwareUpgrade(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseRollbackUpgradeReq req)
public YBATask rollbackSoftwareUpgrade(UUID cUUID, UUID uniUUID, UniverseRollbackUpgradeReq req)
throws Exception {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);
Expand All @@ -195,11 +192,7 @@ public YBATask rollbackSoftwareUpgrade(
}

public UniverseSoftwareUpgradePrecheckResp precheckSoftwareUpgrade(
Http.Request request,
UUID cUUID,
UUID uniUUID,
UniverseSoftwareUpgradePrecheckReq precheckReq)
throws Exception {
UUID cUUID, UUID uniUUID, UniverseSoftwareUpgradePrecheckReq precheckReq) throws Exception {
if (confGetter.getGlobalConf(GlobalConfKeys.enableReleasesRedesign)) {
Release.getByVersionOrBadRequest(precheckReq.getYbSoftwareVersion());
}
Expand All @@ -210,8 +203,7 @@ public UniverseSoftwareUpgradePrecheckResp precheckSoftwareUpgrade(
v1Resp);
}

public YBATask restartUniverse(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseRestart uniRestart)
public YBATask restartUniverse(UUID cUUID, UUID uniUUID, UniverseRestart uniRestart)
throws JsonProcessingException {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);
Expand Down Expand Up @@ -250,8 +242,7 @@ public YBATask restartUniverse(
return ybaTask;
}

public YBATask systemdEnable(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseSystemdEnableStart systemd)
public YBATask systemdEnable(UUID cUUID, UUID uniUUID, UniverseSystemdEnableStart systemd)
throws JsonProcessingException {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);
Expand All @@ -271,8 +262,7 @@ public YBATask systemdEnable(
return ybaTask;
}

public YBATask tlsToggle(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseEditEncryptionInTransit spec)
public YBATask tlsToggle(UUID cUUID, UUID uniUUID, UniverseEditEncryptionInTransit spec)
throws JsonProcessingException {

Customer customer = Customer.getOrBadRequest(cUUID);
Expand All @@ -289,8 +279,7 @@ public YBATask tlsToggle(
return ybaTask;
}

public YBATask certRotate(
Http.Request request, UUID cUUID, UUID uniUUID, UniverseCertRotateSpec spec)
public YBATask certRotate(UUID cUUID, UUID uniUUID, UniverseCertRotateSpec spec)
throws JsonProcessingException {

Customer customer = Customer.getOrBadRequest(cUUID);
Expand All @@ -306,4 +295,23 @@ public YBATask certRotate(
log.info("Started cert rotate task {}", mapper.writeValueAsString(ybaTask));
return ybaTask;
}

public YBATask editKubernetesOverrides(
UUID cUUID, UUID uniUUID, UniverseEditKubernetesOverrides spec)
throws JsonProcessingException {
Customer customer = Customer.getOrBadRequest(cUUID);
Universe universe = Universe.getOrBadRequest(uniUUID, customer);

KubernetesOverridesUpgradeParams v1Params =
UniverseDefinitionTaskParamsMapper.INSTANCE.toKubernetesOverridesUpgradeParams(
universe.getUniverseDetails());
v1Params =
UniverseEditKubernetesOverridesParamsMapper.INSTANCE.copyToV1KubernetesOverridesParams(
spec, v1Params);

UUID taskUUID = v1Handler.upgradeKubernetesOverrides(v1Params, customer, universe);
YBATask ybaTask = new YBATask().taskUuid(taskUUID).resourceUuid(uniUUID);
log.info("Started kubernetes overrides upgrade task {}", mapper.writeValueAsString(ybaTask));
return ybaTask;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.yugabyte.yw.forms.FinalizeUpgradeParams;
import com.yugabyte.yw.forms.GFlagsUpgradeParams;
import com.yugabyte.yw.forms.KubernetesGFlagsUpgradeParams;
import com.yugabyte.yw.forms.KubernetesOverridesUpgradeParams;
import com.yugabyte.yw.forms.RestartTaskParams;
import com.yugabyte.yw.forms.RollbackUpgradeParams;
import com.yugabyte.yw.forms.SoftwareUpgradeParams;
Expand Down Expand Up @@ -154,6 +155,15 @@ public ThirdpartySoftwareUpgradeParams toThirdpartySoftwareUpgradeParams(
@Mapping(target = "nonPrimaryClusters", ignore = true)
public CertsRotateParams toCertsRotateParams(UniverseDefinitionTaskParams source);

@Mapping(target = "existingLBs", ignore = true)
@Mapping(target = "primaryCluster", ignore = true)
@Mapping(target = "TServers", ignore = true)
@Mapping(target = "readOnlyClusters", ignore = true)
@Mapping(target = "addOnClusters", ignore = true)
@Mapping(target = "nonPrimaryClusters", ignore = true)
public KubernetesOverridesUpgradeParams toKubernetesOverridesUpgradeParams(
UniverseDefinitionTaskParams source);

@Mapping(target = "spec", source = ".")
UniverseCreateSpec toV2UniverseCreateSpec(UniverseDefinitionTaskParams v1UniverseTaskParams);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package api.v2.mappers;

import api.v2.models.UniverseEditKubernetesOverrides;
import com.yugabyte.yw.forms.KubernetesOverridesUpgradeParams;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;

@Mapper(config = CentralConfig.class)
public interface UniverseEditKubernetesOverridesParamsMapper {
UniverseEditKubernetesOverridesParamsMapper INSTANCE =
Mappers.getMapper(UniverseEditKubernetesOverridesParamsMapper.class);

@Mapping(source = "overrides", target = "universeOverrides")
KubernetesOverridesUpgradeParams copyToV1KubernetesOverridesParams(
UniverseEditKubernetesOverrides source,
@MappingTarget KubernetesOverridesUpgradeParams target);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
required: true
content:
application/json:
schema:
$ref: "../schemas/UniverseEditKubernetesOverrides.yaml"
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ allOf:
description: Used only for a k8s Universe. Required for k8s Universe if instance_type is not specified. Sets custom cpu and memory requests/limits for tserver pods of a cluster.
$ref: "./K8SNodeResourceSpec.yaml"
az_node_spec:
description: Granular node settings overridden per Availability Zone idetified by AZ uuid.
description: Granular node settings overridden per Availability Zone identified by AZ uuid.
additionalProperties:
$ref: "./AvailabilityZoneNodeSpec.yaml"
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
title: UniverseEditKubernetesOverrides
description: |
UniverseEditKubernetesOverrides
Update all kubernetes overrides on the universe. Part of UniverseKubernetesOverridesReq
type: object
properties:
overrides:
description: Global kubernetes overrides to apply across the entire universe.
type: string
example: |-
tserver:
podLabels:
env: test
az_overrides:
description: Granular kubernetes overrides per Availability Zone identified by AZ uuid.
example: 'az_uuid: "tserver:\n podLabels:\n env: test"'
additionalProperties:
type: string
Loading

0 comments on commit 1b9be2e

Please sign in to comment.