Added handeling for dependents.
This commit is contained in:
@@ -31,6 +31,7 @@ type aService struct{
|
|||||||
ServiceId string `json:"serviceId"`;
|
ServiceId string `json:"serviceId"`;
|
||||||
VolumeNames []string `json:"volumeNames"`;
|
VolumeNames []string `json:"volumeNames"`;
|
||||||
Node string `json:"node"`;
|
Node string `json:"node"`;
|
||||||
|
Dependents []string `json:"dependents"`;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(Config cfg.Config){
|
func Run(Config cfg.Config){
|
||||||
@@ -159,6 +160,12 @@ func listServices(w http.ResponseWriter, r *http.Request){
|
|||||||
continue;
|
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"], ",");
|
targetVolumes := strings.Split(settings["blazena.volumes"], ",");
|
||||||
|
|
||||||
var validVolumeNames []string;
|
var validVolumeNames []string;
|
||||||
@@ -169,12 +176,6 @@ func listServices(w http.ResponseWriter, r *http.Request){
|
|||||||
validVolumeNames = append(validVolumeNames, mnt.Source);
|
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{
|
for _, volume := range targetVolumes{
|
||||||
if contains(validVolumeNames, volume){
|
if contains(validVolumeNames, volume){
|
||||||
continue;
|
continue;
|
||||||
@@ -185,10 +186,36 @@ func listServices(w http.ResponseWriter, r *http.Request){
|
|||||||
continue SERVICES;
|
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{
|
services = append(services, aService{
|
||||||
ServiceId: service.ID,
|
ServiceId: service.ID,
|
||||||
VolumeNames: targetVolumes,
|
VolumeNames: targetVolumes,
|
||||||
Node: settings["blazena.node"],
|
Node: settings["blazena.node"],
|
||||||
|
Dependents: dependents,
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
15
host/host.go
15
host/host.go
@@ -25,6 +25,7 @@ type aService struct{
|
|||||||
ServiceId string `json:"serviceId"`;
|
ServiceId string `json:"serviceId"`;
|
||||||
VolumeNames []string `json:"volumeNames"`;
|
VolumeNames []string `json:"volumeNames"`;
|
||||||
Node string `json:"node"`;
|
Node string `json:"node"`;
|
||||||
|
Dependents []string `json:"dependents"`;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(Config cfg.Config) {
|
func Run(Config cfg.Config) {
|
||||||
@@ -46,6 +47,12 @@ func Run(Config cfg.Config) {
|
|||||||
|
|
||||||
for _, service := range services {
|
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));
|
slog.Info("Scaling Down", slog.String("serviceId", service.ServiceId));
|
||||||
scale(Config, service.ServiceId, false);
|
scale(Config, service.ServiceId, false);
|
||||||
slog.Info("Done");
|
slog.Info("Done");
|
||||||
@@ -89,9 +96,16 @@ func Run(Config cfg.Config) {
|
|||||||
cleanupService(Config, service);
|
cleanupService(Config, service);
|
||||||
slog.Info("Done!");
|
slog.Info("Done!");
|
||||||
}
|
}
|
||||||
|
|
||||||
slog.Info("Scaling Up", slog.String("serviceId", service.ServiceId));
|
slog.Info("Scaling Up", slog.String("serviceId", service.ServiceId));
|
||||||
scale(Config, service.ServiceId, true);
|
scale(Config, service.ServiceId, true);
|
||||||
slog.Info("Done!");
|
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{
|
DockerClient.ContainerRemove(context.Background(), Config.Constants.StorageContainerName, container.RemoveOptions{
|
||||||
@@ -127,6 +141,7 @@ func getServices(Config cfg.Config)[]aService{
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic("Failed to unmarshal response.");
|
panic("Failed to unmarshal response.");
|
||||||
}
|
}
|
||||||
|
slog.Debug("Services", slog.Any("value", services));
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user