Added handeling for dependents.

This commit is contained in:
rony5394
2026-04-19 13:39:00 +02:00
parent 87d8388810
commit 32069f7e9d
2 changed files with 48 additions and 6 deletions

View File

@@ -31,6 +31,7 @@ type aService struct{
ServiceId string `json:"serviceId"`;
VolumeNames []string `json:"volumeNames"`;
Node string `json:"node"`;
Dependents []string `json:"dependents"`;
}
func Run(Config cfg.Config){
@@ -159,6 +160,12 @@ func listServices(w http.ResponseWriter, r *http.Request){
continue;
}
if !contains(validNodeHostnames, settings["blazena.node"]) {
errMsg := "Node with hostname:'"+ settings["blazena.node"] +"' does not exist.";
slog.Warn("Invalid Service Config!", slog.String("serviceId", service.ID), slog.String("errMessage", errMsg));
continue SERVICES;
}
targetVolumes := strings.Split(settings["blazena.volumes"], ",");
var validVolumeNames []string;
@@ -169,12 +176,6 @@ func listServices(w http.ResponseWriter, r *http.Request){
validVolumeNames = append(validVolumeNames, mnt.Source);
}
if !contains(validNodeHostnames, settings["blazena.node"]) {
errMsg := "Node with hostname:'"+ settings["blazena.node"] +"' does not exist.";
slog.Warn("Invalid Service Config!", slog.String("serviceId", service.ID), slog.String("errMessage", errMsg));
continue SERVICES;
}
for _, volume := range targetVolumes{
if contains(validVolumeNames, volume){
continue;
@@ -185,10 +186,36 @@ func listServices(w http.ResponseWriter, r *http.Request){
continue SERVICES;
}
var dependents []string;
if(settings["blazena.dependents"] != ""){
dependents = strings.Split(settings["blazena.dependents"], ",");
} else {
dependents = make([]string, 0);
}
var validDependents []string;
for _, x := range list{
validDependents = append(validDependents, x.Spec.Name);
}
slog.Debug("validDependents", slog.Any("value", validDependents));
slog.Debug("dependents", slog.Any("value", dependents));
for _, dependent := range dependents {
if contains(validDependents, dependent){continue;}
errMsg := "Dependent named '"+ dependent +"' was not found in this cluster!";
slog.Warn("Invalid Service Config!", slog.String("serviceId", service.ID), slog.String("errMessage", errMsg));
continue SERVICES;
}
services = append(services, aService{
ServiceId: service.ID,
VolumeNames: targetVolumes,
Node: settings["blazena.node"],
Dependents: dependents,
});
}

View File

@@ -25,6 +25,7 @@ type aService struct{
ServiceId string `json:"serviceId"`;
VolumeNames []string `json:"volumeNames"`;
Node string `json:"node"`;
Dependents []string `json:"dependents"`;
}
func Run(Config cfg.Config) {
@@ -46,6 +47,12 @@ func Run(Config cfg.Config) {
for _, service := range services {
for _, dependent := range service.Dependents {
slog.Info("Scaling Down Dependent", slog.String("serviceId", service.ServiceId), slog.String("dependentId", dependent));
scale(Config, dependent, false);
slog.Info("Done");
}
slog.Info("Scaling Down", slog.String("serviceId", service.ServiceId));
scale(Config, service.ServiceId, false);
slog.Info("Done");
@@ -89,9 +96,16 @@ func Run(Config cfg.Config) {
cleanupService(Config, service);
slog.Info("Done!");
}
slog.Info("Scaling Up", slog.String("serviceId", service.ServiceId));
scale(Config, service.ServiceId, true);
slog.Info("Done!");
for _, dependent := range service.Dependents {
slog.Info("Scaling Up Dependent", slog.String("serviceId", service.ServiceId), slog.String("dependentId", dependent));
scale(Config, dependent, true);
slog.Info("Done");
}
}
DockerClient.ContainerRemove(context.Background(), Config.Constants.StorageContainerName, container.RemoveOptions{
@@ -127,6 +141,7 @@ func getServices(Config cfg.Config)[]aService{
if err != nil {
panic("Failed to unmarshal response.");
}
slog.Debug("Services", slog.Any("value", services));
return services;
}