Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions assets/active/machine-config/99-vm-drain-shutdown-inhibitor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: worker
platform.kubevirt.io/managed-by: virt-platform-autopilot
name: 99-vm-drain-shutdown-inhibitor
spec:
config:
ignition:
version: 3.5.0
storage:
files:
- path: /etc/systemd/logind.conf.d/10-inhibit-delay.conf
mode: 0644
contents:
source: data:text/plain;charset=utf-8;base64,W0xvZ2luXQpJbmhpYml0RGVsYXlNYXhTZWM9MTUwCg==
overwrite: true
- path: /usr/local/bin/vm-drain-shutdown-inhibitor.py
mode: 0755
contents:
source: data:text/plain;charset=utf-8;base64,IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiIKU2h1dGRvd24gaW5oaWJpdG9yIGRhZW1vbi4KClRha2VzIGEgZGVsYXkgaW5oaWJpdG9yIGxvY2sgdmlhIHN5c3RlbWQtaW5oaWJpdCwgdGhlbiB3YXRjaGVzIGZvciB0aGUKUHJlcGFyZUZvclNodXRkb3duKHRydWUpIEQtQnVzIHNpZ25hbCBmcm9tIGxvZ2luZC4gV2hlbiB0aGUgUHJlcGFyZUZvclNodXRkb3duCnNpZ25hbCBpcyBvYnNlcnZlZCwgaXQgZmluZHMgYWxsIHBvZHMgdGhhdCBhcHBlYXIgdG8gY29udGFpbiBydW5uaW5nIGt1YmV2aXJ0IFZNcwphbmQgdXNlcyBjcmljdGwgZXhlYyB0byBpc3N1ZSB2aXJzaCBzaHV0ZG93bnMuCgoiIiIKCmltcG9ydCBqc29uCmltcG9ydCBsb2dnaW5nCmltcG9ydCBzaWduYWwKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHN5cwppbXBvcnQgdGltZQpmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgVGhyZWFkUG9vbEV4ZWN1dG9yLCBhc19jb21wbGV0ZWQKCmxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJzaHV0ZG93bi12bXMiKQoKVElNRU9VVF9TRUMgPSAxMjAKUE9MTF9TRUMgPSAyClBBUkFMTEVMID0gMzIKCmNsYXNzIFZpcnRMYXVuY2hlclBvZDoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb2RfaWQsIHBvZF9uYW1lLCBuYW1lc3BhY2UsIGNvbnRhaW5lcl9pZD0iIik6CiAgICAgICAgc2VsZi5wb2RfaWQgPSBwb2RfaWQKICAgICAgICBzZWxmLnBvZF9uYW1lID0gcG9kX25hbWUKICAgICAgICBzZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZQogICAgICAgIHNlbGYuY29udGFpbmVyX2lkID0gY29udGFpbmVyX2lkCgoKY2xhc3MgVk1JbmZvOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRvbWFpbl9uYW1lLCBzdGF0ZSwgcG9kKToKICAgICAgICBzZWxmLmRvbWFpbl9uYW1lID0gZG9tYWluX25hbWUKICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUKICAgICAgICBzZWxmLnBvZCA9IHBvZAoKCmRlZiBydW5fY21kKGFyZ3MsICosIHRpbWVvdXQ9MzAsIGNoZWNrPVRydWUpOgogICAgbG9nLmRlYnVnKCJSdW5uaW5nOiAlcyIsICIgIi5qb2luKGFyZ3MpKQogICAgdHJ5OgogICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLnJ1bigKICAgICAgICAgICAgYXJncywKICAgICAgICAgICAgY2FwdHVyZV9vdXRwdXQ9VHJ1ZSwKICAgICAgICAgICAgdGV4dD1UcnVlLAogICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsCiAgICAgICAgKQogICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQgYXMgZXhjOgogICAgICAgIGxvZy5lcnJvcigiQ29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIgJWRzOiAlcyIsIHRpbWVvdXQsICIgIi5qb2luKGFyZ3MpKQogICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoMSkgZnJvbSBleGMKCiAgICBpZiBwcm9jLnN0ZG91dDoKICAgICAgICBsb2cuZGVidWcoInN0ZG91dDogJXMiLCBwcm9jLnN0ZG91dC5yc3RyaXAoKSkKICAgIGlmIHByb2Muc3RkZXJyOgogICAgICAgIGxvZy5kZWJ1Zygic3RkZXJyOiAlcyIsIHByb2Muc3RkZXJyLnJzdHJpcCgpKQoKICAgIGlmIGNoZWNrIGFuZCBwcm9jLnJldHVybmNvZGUgIT0gMDoKICAgICAgICBsb2cuZXJyb3IoCiAgICAgICAgICAgICJDb21tYW5kIGZhaWxlZCAocmM9JWQpOiAlc1xuJXMiLAogICAgICAgICAgICBwcm9jLnJldHVybmNvZGUsCiAgICAgICAgICAgICIgIi5qb2luKGFyZ3MpLAogICAgICAgICAgICBwcm9jLnN0ZGVyci5yc3RyaXAoKSwKICAgICAgICApCiAgICAgICAgcmFpc2Ugc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoCiAgICAgICAgICAgIHByb2MucmV0dXJuY29kZSwgYXJncywgcHJvYy5zdGRvdXQsIHByb2Muc3RkZXJyCiAgICAgICAgKQogICAgcmV0dXJuIHByb2MKCgpkZWYgZGlzY292ZXJfcG9kcygpOgogICAgcHJvYyA9IHJ1bl9jbWQoCiAgICAgICAgWyJjcmljdGwiLCAicG9kcyIsICItLWxhYmVsIiwgImt1YmV2aXJ0LmlvPXZpcnQtbGF1bmNoZXIiLCAiLW8iLCAianNvbiJdLAogICAgKQogICAgZGF0YSA9IGpzb24ubG9hZHMocHJvYy5zdGRvdXQpCiAgICBpdGVtcyA9IGRhdGEuZ2V0KCJpdGVtcyIpIG9yIFtdCgogICAgcG9kcyA9IFtdCiAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICBzdGF0ZSA9IGl0ZW0uZ2V0KCJzdGF0ZSIsICIiKQogICAgICAgIGlmIHN0YXRlICE9ICJTQU5EQk9YX1JFQURZIjoKICAgICAgICAgICAgcG9kX25hbWUgPSBpdGVtLmdldCgibWV0YWRhdGEiLCB7fSkuZ2V0KCJuYW1lIiwgaXRlbS5nZXQoImlkIiwgIj8iKSkKICAgICAgICAgICAgbG9nLndhcm5pbmcoIlNraXBwaW5nIHBvZCAlcyBpbiBzdGF0ZSAlcyIsIHBvZF9uYW1lLCBzdGF0ZSkKICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgbWV0YWRhdGEgPSBpdGVtLmdldCgibWV0YWRhdGEiLCB7fSkKICAgICAgICBwb2QgPSBWaXJ0TGF1bmNoZXJQb2QoCiAgICAgICAgICAgIHBvZF9pZD1pdGVtWyJpZCJdLAogICAgICAgICAgICBwb2RfbmFtZT1tZXRhZGF0YS5nZXQoIm5hbWUiLCAiIiksCiAgICAgICAgICAgIG5hbWVzcGFjZT1tZXRhZGF0YS5nZXQoIm5hbWVzcGFjZSIsICIiKSwKICAgICAgICApCiAgICAgICAgcG9kcy5hcHBlbmQocG9kKQoKICAgIHJldHVybiBwb2RzCgoKZGVmIHJlc29sdmVfY29udGFpbmVyX2lkKHBvZCk6CiAgICBwcm9jID0gcnVuX2NtZCgKICAgICAgICBbImNyaWN0bCIsICJwcyIsICItLXBvZCIsIHBvZC5wb2RfaWQsICItbyIsICJqc29uIl0sCiAgICAgICAgY2hlY2s9RmFsc2UsCiAgICApCiAgICBpZiBwcm9jLnJldHVybmNvZGUgIT0gMDoKICAgICAgICBsb2cud2FybmluZygiRmFpbGVkIHRvIGxpc3QgY29udGFpbmVycyBmb3IgcG9kICVzIiwgcG9kLnBvZF9uYW1lKQogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRhdGEgPSBqc29uLmxvYWRzKHByb2Muc3Rkb3V0KQogICAgY29udGFpbmVycyA9IGRhdGEuZ2V0KCJjb250YWluZXJzIikgb3IgW10KCiAgICBmb3IgY29udGFpbmVyIGluIGNvbnRhaW5lcnM6CiAgICAgICAgbWV0YWRhdGEgPSBjb250YWluZXIuZ2V0KCJtZXRhZGF0YSIsIHt9KQogICAgICAgIG5hbWUgPSBtZXRhZGF0YS5nZXQoIm5hbWUiLCAiIikKICAgICAgICBzdGF0ZSA9IGNvbnRhaW5lci5nZXQoInN0YXRlIiwgIiIpCiAgICAgICAgaWYgbmFtZSA9PSAiY29tcHV0ZSIgYW5kIHN0YXRlID09ICJDT05UQUlORVJfUlVOTklORyI6CiAgICAgICAgICAgIHBvZC5jb250YWluZXJfaWQgPSBjb250YWluZXJbImlkIl0KICAgICAgICAgICAgcmV0dXJuIFRydWUKCiAgICBsb2cud2FybmluZygiTm8gcnVubmluZyBjb21wdXRlIGNvbnRhaW5lciBpbiBwb2QgJXMiLCBwb2QucG9kX25hbWUpCiAgICByZXR1cm4gRmFsc2UKCgpkZWYgZ2V0X3ZtX2RvbWFpbihwb2QpOgogICAgdHJ5OgogICAgICAgIHByb2MgPSBydW5fY21kKAogICAgICAgICAgICBbImNyaWN0bCIsICJleGVjIiwgcG9kLmNvbnRhaW5lcl9pZCwgInZpcnNoIiwgImxpc3QiLCAiLS1uYW1lIl0sCiAgICAgICAgKQogICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgogICAgICAgIGxvZy53YXJuaW5nKCJ2aXJzaCBsaXN0IGZhaWxlZCBpbiBwb2QgJXMiLCBwb2QucG9kX25hbWUpCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICBuYW1lcyA9IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gcHJvYy5zdGRvdXQuc3BsaXRsaW5lcygpIGlmIGxpbmUuc3RyaXAoKV0KICAgIGlmIG5vdCBuYW1lczoKICAgICAgICBsb2cud2FybmluZygiTm8gVk0gZG9tYWlucyBmb3VuZCBpbiBwb2QgJXMiLCBwb2QucG9kX25hbWUpCiAgICAgICAgcmV0dXJuIE5vbmUKCiAgICByZXR1cm4gbmFtZXNbMF0KCgpkZWYgZ2V0X2RvbWFpbl9zdGF0ZShwb2QsIGRvbWFpbik6CiAgICBwcm9jID0gcnVuX2NtZCgKICAgICAgICBbImNyaWN0bCIsICJleGVjIiwgcG9kLmNvbnRhaW5lcl9pZCwgInZpcnNoIiwgImRvbXN0YXRlIiwgZG9tYWluXSwKICAgICAgICBjaGVjaz1GYWxzZSwKICAgICkKICAgIGlmIHByb2MucmV0dXJuY29kZSAhPSAwOgogICAgICAgIHJldHVybiAidW5rbm93biIKICAgIHJldHVybiBwcm9jLnN0ZG91dC5zdHJpcCgpCgoKZGVmIHNodXRkb3duX3ZtKHZtLCAqLCB0aW1lb3V0LCBwb2xsX2ludGVydmFsKToKICAgICIiIlVzZSBjcmljdGwgZXhlYyB0byBpc3N1ZSBhIHZpcnNoIHNodXRkb3duIHRvIHRoZSBWTS4iIiIKICAgIHBvZCA9IHZtLnBvZAogICAgbGFiZWwgPSBmIntwb2QubmFtZXNwYWNlfS97cG9kLnBvZF9uYW1lfSAoZG9tYWluOiB7dm0uZG9tYWluX25hbWV9KSIKICAgIGxvZy5pbmZvKCJTaHV0dGluZyBkb3duICVzIiwgbGFiZWwpCiAgICB0cnk6CiAgICAgICAgcnVuX2NtZCgKICAgICAgICAgICAgWyJjcmljdGwiLCAiZXhlYyIsIHBvZC5jb250YWluZXJfaWQsICJ2aXJzaCIsICJzaHV0ZG93biIsIHZtLmRvbWFpbl9uYW1lXSwKICAgICAgICApCiAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CiAgICAgICAgbG9nLmVycm9yKCJ2aXJzaCBzaHV0ZG93biBmYWlsZWQgZm9yICVzIiwgbGFiZWwpCiAgICAgICAgcmV0dXJuCgogICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgdGltZW91dAogICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8IGRlYWRsaW5lOgogICAgICAgIHN0YXRlID0gZ2V0X2RvbWFpbl9zdGF0ZShwb2QsIHZtLmRvbWFpbl9uYW1lKQogICAgICAgIGlmIHN0YXRlID09ICJzaHV0IG9mZiI6CiAgICAgICAgICAgIGxvZy5pbmZvKCJWTSAlcyBpcyBzaHV0IG9mZiIsIGxhYmVsKQogICAgICAgICAgICByZXR1cm4KICAgICAgICBsb2cuZGVidWcoIlZNICVzIHN0YXRlOiAlcyDigJQgd2FpdGluZy4uLiIsIGxhYmVsLCBzdGF0ZSkKICAgICAgICB0aW1lLnNsZWVwKHBvbGxfaW50ZXJ2YWwpCgogICAgc3RhdGUgPSBnZXRfZG9tYWluX3N0YXRlKHBvZCwgdm0uZG9tYWluX25hbWUpCiAgICBpZiBzdGF0ZSA9PSAic2h1dCBvZmYiOgogICAgICAgIGxvZy5pbmZvKCJWTSAlcyBpcyBzaHV0IG9mZiIsIGxhYmVsKQogICAgZWxzZToKICAgICAgICBsb2cud2FybmluZygiVk0gJXMgdGltZWQgb3V0IChzdGF0ZTogJXMpIiwgbGFiZWwsIHN0YXRlKQoKCmRlZiBzaHV0ZG93bl92bXMoKToKICAgICIiIkZpbmQgYW5kIHNodXRkb3duIHJ1bm5pbmcgVk1zLiIiIgogICAgbG9nLmluZm8oIkRpc2NvdmVyaW5nIHZpcnQtbGF1bmNoZXIgcG9kcy4uLiIpCiAgICBwb2RzID0gZGlzY292ZXJfcG9kcygpCiAgICBpZiBub3QgcG9kczoKICAgICAgICBsb2cuaW5mbygiTm8gdmlydC1sYXVuY2hlciBwb2RzIGZvdW5kIG9uIHRoaXMgbm9kZS4iKQogICAgICAgIHJldHVybgoKICAgIGxvZy5pbmZvKCJGb3VuZCAlZCB2aXJ0LWxhdW5jaGVyIHBvZChzKS4gUmVzb2x2aW5nIGNvbnRhaW5lcnMgYW5kIFZNIGRvbWFpbnMuLi4iLCBsZW4ocG9kcykpCgogICAgdm1zID0gW10KICAgIGZvciBwb2QgaW4gcG9kczoKICAgICAgICBpZiBub3QgcmVzb2x2ZV9jb250YWluZXJfaWQocG9kKToKICAgICAgICAgICAgY29udGludWUKICAgICAgICBkb21haW4gPSBnZXRfdm1fZG9tYWluKHBvZCkKICAgICAgICBpZiBkb21haW4gaXMgTm9uZToKICAgICAgICAgICAgY29udGludWUKICAgICAgICBzdGF0ZSA9IGdldF9kb21haW5fc3RhdGUocG9kLCBkb21haW4pCiAgICAgICAgdm1zLmFwcGVuZChWTUluZm8oZG9tYWluX25hbWU9ZG9tYWluLCBzdGF0ZT1zdGF0ZSwgcG9kPXBvZCkpCgogICAgaWYgbm90IHZtczoKICAgICAgICBsb2cuaW5mbygiTm8gcnVubmluZyBWTSBkb21haW5zIGZvdW5kLiIpCiAgICAgICAgcmV0dXJuCgogICAgd2l0aCBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9UEFSQUxMRUwpIGFzIHBvb2w6CiAgICAgICAgZnV0dXJlcyA9IHsKICAgICAgICAgICAgcG9vbC5zdWJtaXQoc2h1dGRvd25fdm0sIHZtLCB0aW1lb3V0PVRJTUVPVVRfU0VDLCBwb2xsX2ludGVydmFsPVBPTExfU0VDKTogdm0gZm9yIHZtIGluIHZtcwogICAgICAgIH0KICAgICAgICBmb3IgZnV0dXJlIGluIGFzX2NvbXBsZXRlZChmdXR1cmVzKToKICAgICAgICAgICAgZnV0dXJlLnJlc3VsdCgpCgojIyMjIyMjIyMjIyMjIyMjIyMjCiMgSW5oaWJpdG9yIFNldHVwICMKIyMjIyMjIyMjIyMjIyMjIyMjIwoKZGVmIHRha2VfbG9jaygpOgogICAgIiIiQWNxdWlyZSBhIHNodXRkb3duIGRlbGF5IGluaGliaXRvci4KCiAgICBzeXN0ZW1kLWluaGliaXQgdGFrZXMgdGhlIGxvY2sgYW5kIGhvbGRzIGl0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlCiAgICB3cmFwcGVkIHByb2Nlc3MuIFdlIHdyYXAgJ3NsZWVwIGluZmluaXR5JyBzbyB0aGUgbG9jayBzdGF5cyBoZWxkCiAgICB1bnRpbCB3ZSBleHBsaWNpdGx5IHRlcm1pbmF0ZSBpdC4KICAgICIiIgogICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oCiAgICAgICAgWwogICAgICAgICAgICAic3lzdGVtZC1pbmhpYml0IiwKICAgICAgICAgICAgIi0td2hhdD1zaHV0ZG93biIsCiAgICAgICAgICAgICItLW1vZGU9ZGVsYXkiLAogICAgICAgICAgICAiLS13aG89dm0tc2h1dGRvd24taG9vayIsCiAgICAgICAgICAgICItLXdoeT12bS1kcmFpbiIsCiAgICAgICAgICAgICJzbGVlcCIsICJpbmZpbml0eSIsCiAgICAgICAgXSwKICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLkRFVk5VTEwsCiAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwKICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAogICAgKQogICAgdGltZS5zbGVlcCgwLjUpCiAgICByYyA9IHByb2MucG9sbCgpCiAgICBpZiByYyBpcyBub3QgTm9uZToKICAgICAgICBzdGRlcnIgPSBwcm9jLnN0ZGVyci5yZWFkKCkuZGVjb2RlKGVycm9ycz0icmVwbGFjZSIpLnN0cmlwKCkKICAgICAgICBpZiBzdGRlcnI6CiAgICAgICAgICAgIGxvZy5lcnJvcigic3lzdGVtZC1pbmhpYml0IHN0ZGVycjogJXMiLCBzdGRlcnIpCiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICBmInN5c3RlbWQtaW5oaWJpdCBleGl0ZWQgaW1tZWRpYXRlbHkgKHJjPXtyY30pIikKICAgIGxvZy5pbmZvKCJJbmhpYml0b3IgbG9jayBhY3F1aXJlZCAod3JhcHBlciBwaWQgJWQpIiwgcHJvYy5waWQpCiAgICByZXR1cm4gcHJvYwoKCmRlZiByZWxlYXNlX2xvY2socHJvYyk6CiAgICAiIiJSZWxlYXNlIHRoZSBsb2NrIGJ5IGtpbGxpbmcgdGhlIHN5c3RlbWQtaW5oaWJpdCB3cmFwcGVyLiIiIgogICAgaWYgcHJvYyBpcyBOb25lIG9yIHByb2MucG9sbCgpIGlzIG5vdCBOb25lOgogICAgICAgIHJldHVybgogICAgcHJvYy50ZXJtaW5hdGUoKQogICAgdHJ5OgogICAgICAgIHByb2Mud2FpdCh0aW1lb3V0PTUpCiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKICAgICAgICBwcm9jLmtpbGwoKQogICAgICAgIHByb2Mud2FpdCgpCiAgICBsb2cuaW5mbygiSW5oaWJpdG9yIGxvY2sgcmVsZWFzZWQiKQoKCmRlZiBzdGFydF9tb25pdG9yKCk6CiAgICAiIiJTdGFydCBidXNjdGwgbW9uaXRvcmluZyBmb3IgdGhlIFByZXBhcmVGb3JTaHV0ZG93biBzaWduYWwuCgogICAgVXNlcyBzdGRidWYgdG8gZm9yY2UgbGluZS1idWZmZXJlZCBvdXRwdXQg4oCUIHdpdGhvdXQgaXQsIGxpYmMKICAgIGJsb2NrLWJ1ZmZlcnMgcGlwZSBvdXRwdXQgYW5kIHRoZSBzaWduYWwgbWF5IG5ldmVyIHJlYWNoIHVzLgogICAgIiIiCiAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbigKICAgICAgICBbCiAgICAgICAgICAgICJzdGRidWYiLCAiLW9MIiwKICAgICAgICAgICAgImJ1c2N0bCIsICJtb25pdG9yIiwgIi0tc3lzdGVtIiwKICAgICAgICAgICAgIi0tbWF0Y2giLAogICAgICAgICAgICAidHlwZT0nc2lnbmFsJywiCiAgICAgICAgICAgICJpbnRlcmZhY2U9J29yZy5mcmVlZGVza3RvcC5sb2dpbjEuTWFuYWdlcicsIgogICAgICAgICAgICAibWVtYmVyPSdQcmVwYXJlRm9yU2h1dGRvd24nIiwKICAgICAgICBdLAogICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICB0ZXh0PVRydWUsCiAgICApCgoKZGVmIG1haW4oKToKICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCiAgICAgICAgbGV2ZWw9bG9nZ2luZy5JTkZPLAogICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShuYW1lKXMgWyUobGV2ZWxuYW1lKXNdICUobWVzc2FnZSlzIiwKICAgICkKCiAgICBpbmhpYml0b3IgPSB0YWtlX2xvY2soKQogICAgbW9uaXRvciA9IHN0YXJ0X21vbml0b3IoKQogICAgbW9uaXRvcl9zdGFydGVkX2F0ID0gdGltZS5tb25vdG9uaWMoKQoKICAgICMgc3lzLmV4aXQgcmFpc2VzIFN5c3RlbUV4aXQsIHdoaWNoIHByb3BhZ2F0ZXMgb3V0IG9mIHRoZSBibG9ja2luZwogICAgIyByZWFkbGluZSgpIGFuZCB0cmlnZ2VycyB0aGUgZmluYWxseSBibG9jayBmb3IgY2xlYW51cC4KICAgIGRlZiBoYW5kbGVfZXhpdChzaWdudW0sIF9mcmFtZSk6CiAgICAgICAgc3lzLmV4aXQoMCkKCiAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBoYW5kbGVfZXhpdCkKICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgaGFuZGxlX2V4aXQpCgogICAgbG9nLmluZm8oIldhdGNoaW5nIGZvciBQcmVwYXJlRm9yU2h1dGRvd24gc2lnbmFsLi4uIikKCiAgICAjIGJ1c2N0bCBtb25pdG9yIG91dHB1dCBmb3IgYSBzaWduYWwgbG9va3MgbGlrZToKICAgICMKICAgICMgICDigKMgVHlwZT1zaWduYWwgIEVuZGlhbj1sICAuLi4KICAgICMgICAgIFNlbmRlcj06MS4yICBQYXRoPS4uLiAgTWVtYmVyPVByZXBhcmVGb3JTaHV0ZG93bgogICAgIyAgICAgTUVTU0FHRSAiYiIgewogICAgIyAgICAgICAgICAgICBCT09MRUFOIHRydWU7CiAgICAjICAgICB9OwogICAgIwogICAgIyBTaW5jZSBvdXIgLS1tYXRjaCBmaWx0ZXIgb25seSBwYXNzZXMgUHJlcGFyZUZvclNodXRkb3duLCBhbnkKICAgICMgQk9PTEVBTiBsaW5lIHdlIHNlZSBiZWxvbmdzIHRvIHRoYXQgc2lnbmFsLgogICAgcmV0cmllcyA9IDAKICAgIHNhd19zaWduYWxfaGVhZGVyID0gRmFsc2UKICAgIHRyeToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBsaW5lID0gbW9uaXRvci5zdGRvdXQucmVhZGxpbmUoKQogICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgIHN0ZGVycl9vdXQgPSBtb25pdG9yLnN0ZGVyci5yZWFkKCkKICAgICAgICAgICAgICAgIG1vbml0b3Iud2FpdCgpCiAgICAgICAgICAgICAgICBpZiBzdGRlcnJfb3V0OgogICAgICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCJidXNjdGwgc3RkZXJyOiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyX291dC5zdHJpcCgpKQoKICAgICAgICAgICAgICAgIHJldHJpZXMgKz0gMQogICAgICAgICAgICAgICAgZGVsYXkgPSBtaW4ocmV0cmllcyAqIDIsIDMwKQogICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoImJ1c2N0bCBtb25pdG9yIGV4aXRlZCDigJQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHJ5ICVkIGluICVkcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWVzLCBkZWxheSkKICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoZGVsYXkpCiAgICAgICAgICAgICAgICBtb25pdG9yID0gc3RhcnRfbW9uaXRvcigpCiAgICAgICAgICAgICAgICBtb25pdG9yX3N0YXJ0ZWRfYXQgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICAgICBzYXdfc2lnbmFsX2hlYWRlciA9IEZhbHNlCiAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgcmV0cmllcyA9IDAKCiAgICAgICAgICAgIGlmICJQcmVwYXJlRm9yU2h1dGRvd24iIGluIGxpbmU6CiAgICAgICAgICAgICAgICBzYXdfc2lnbmFsX2hlYWRlciA9IFRydWUKICAgICAgICAgICAgZWxpZiBzYXdfc2lnbmFsX2hlYWRlciBhbmQgIkJPT0xFQU4iIGluIGxpbmU6CiAgICAgICAgICAgICAgICBzYXdfc2lnbmFsX2hlYWRlciA9IEZhbHNlCiAgICAgICAgICAgICAgICBpZiAidHJ1ZSIgaW4gbGluZS5sb3dlcigpOgogICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJPYnNlcnZlZCBzaHV0ZG93biByZXF1ZXN0LiIpCiAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl92bXMoKQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5leGNlcHRpb24oIlNodXR0aW5nIGRvd24gVk1zIGZhaWxlZC4iKQogICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbG9jayhpbmhpYml0b3IpCiAgICAgICAgICAgICAgICAgICAgaW5oaWJpdG9yID0gTm9uZQogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICBmaW5hbGx5OgogICAgICAgIHJlbGVhc2VfbG9jayhpbmhpYml0b3IpCiAgICAgICAgaWYgbW9uaXRvci5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgbW9uaXRvci50ZXJtaW5hdGUoKQogICAgICAgICAgICBtb25pdG9yLndhaXQoKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKCk=
overwrite: true
systemd:
units:
- name: vm-drain-shutdown-inhibitor.service
enabled: true
contents: |
[Unit]
Description=VM drain shutdown inhibitor.
After=systemd-logind.service dbus.service crio.service
Requires=systemd-logind.service dbus.service
Wants=crio.service
[Service]
Type=simple
ExecStart=/usr/local/bin/vm-drain-shutdown-inhibitor.py
Restart=on-failure
RestartSec=5s
TimeoutStopSec=150s
[Install]
WantedBy=multi-user.target

10 changes: 10 additions & 0 deletions assets/active/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,16 @@ assets:
reconcile_order: 20
conditions: []

- name: vm-drain-shutdown-inhibitor
path: active/machine-config/99-vm-drain-shutdown-inhibitor.yaml
phase: 2
install: opt-in
component: MachineConfig
conditions:
- type: annotation
key: platform.kubevirt.io/vm-drain-shutdown-inhibitor
value: "true"

# Phase 2: Opt-in - Advanced features
# TODO: Implement these assets:
# - vfio-assign (machine-config/04-vfio-assign.yaml.tpl)
Expand Down
Loading