Skip to content

Commit

Permalink
Refresh virtualization host pillar due to virtpoller removal
Browse files Browse the repository at this point in the history
  • Loading branch information
cbosdo committed Jul 21, 2021
1 parent ce125fd commit 3c97ed2
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 5 deletions.
38 changes: 33 additions & 5 deletions java/code/src/com/redhat/rhn/manager/satellite/UpgradeCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,33 @@
*/
package com.redhat.rhn.manager.satellite;

import static com.suse.manager.webui.services.SaltConstants.ORG_STATES_DIRECTORY_PREFIX;

import com.redhat.rhn.GlobalInstanceHolder;
import com.redhat.rhn.common.hibernate.HibernateFactory;
import com.redhat.rhn.domain.config.ConfigChannel;
import com.redhat.rhn.domain.config.ConfigContent;
import com.redhat.rhn.domain.config.ConfigurationFactory;
import com.redhat.rhn.domain.config.ConfigRevision;
import com.redhat.rhn.domain.config.ConfigurationFactory;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.KickstartSession;
import com.redhat.rhn.domain.task.Task;
import com.redhat.rhn.domain.task.TaskFactory;
import com.redhat.rhn.domain.server.MinionServer;
import com.redhat.rhn.domain.server.MinionServerFactory;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.state.ServerStateRevision;
import com.redhat.rhn.domain.state.StateFactory;
import com.redhat.rhn.domain.task.Task;
import com.redhat.rhn.domain.task.TaskFactory;
import com.redhat.rhn.manager.BaseTransactionCommand;
import com.redhat.rhn.manager.kickstart.KickstartSessionCreateCommand;

import com.suse.manager.webui.services.ConfigChannelSaltManager;
import com.suse.manager.webui.services.SaltConstants;
import com.suse.manager.webui.services.SaltStateGeneratorService;
import com.suse.manager.webui.services.pillar.MinionPillarManager;
import com.suse.salt.netapi.datatypes.target.MinionList;

import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;

Expand All @@ -48,8 +55,6 @@
import java.util.Set;
import java.util.stream.Collectors;

import static com.suse.manager.webui.services.SaltConstants.ORG_STATES_DIRECTORY_PREFIX;

/**
* Class responsible for executing one-time upgrade logic
*/
Expand All @@ -67,6 +72,8 @@ public class UpgradeCommand extends BaseTransactionCommand {
UPGRADE_TASK_NAME + "custom_states";
public static final String UPGRADE_REFRESH_CUSTOM_SLS_FILES =
UPGRADE_TASK_NAME + "refresh_custom_sls_files";
public static final String REFRESH_VIRTHOST_PILLARS =
UPGRADE_TASK_NAME + "virthost_pillar_refresh";

private final Path saltRootPath;
private final Path legacyStatesBackupDirectory;
Expand Down Expand Up @@ -133,6 +140,9 @@ public void upgrade() {
case UPGRADE_REFRESH_CUSTOM_SLS_FILES:
refreshCustomSlsFiles();
break;
case REFRESH_VIRTHOST_PILLARS:
refreshVirtHostPillar();
break;
default:
}
// always run this
Expand Down Expand Up @@ -321,4 +331,22 @@ private void refreshCustomSlsFiles() {
log.error("Error refreshing custom SLS files. Ignoring.", e);
}
}

/**
* Regenerate pillar data for every virtualization host.
*/
private void refreshVirtHostPillar() {
try {
List<MinionServer> virtHosts = MinionServerFactory.listMinions().stream()
.filter(Server::hasVirtualizationEntitlement)
.collect(Collectors.toList());
virtHosts.forEach(MinionPillarManager.INSTANCE::generatePillar);
List<String> minionIds = virtHosts.stream().map(MinionServer::getMinionId).collect(Collectors.toList());
GlobalInstanceHolder.SALT_API.refreshPillar(new MinionList(minionIds));
log.warn("Refreshed virtualization hosts pillar");
}
catch (Exception e) {
log.error("Error refreshing virtualization host pillar. Ignoring.", e);
}
}
}
1 change: 1 addition & 0 deletions java/spacewalk-java.changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
- Refresh virtual host pillar to clear the virtpoller beacon (bsc#1188393)
- Fix updating primary net interface on hardware refresh (bsc#1188400)
- Fix issues when removing archived actions using XMLRPC api (bsc#1181223)
- Readable error when "mgr-sync add channel" is called with a non-existing label (bsc#1173143)
Expand Down
1 change: 1 addition & 0 deletions schema/spacewalk/susemanager-schema.changes
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
- Refresh virtual host pillar to clear the virtpoller beacon (bsc#1188393)
- Add Beijing timezone to selectable timezones (bsc#1188193)
- Add Rocky Linux 8 key and vendor
- Add 'test' flag to Ansible playbook actions
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
INSERT INTO rhnTaskQueue (org_id, task_name, task_data)
SELECT id, 'upgrade_satellite_virthost_pillar_refresh', 0
FROM web_customer
WHERE id = 1;

0 comments on commit 3c97ed2

Please sign in to comment.