Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a28f8372b3 | |||
| c7729db898 | |||
| dfc8d598cb | |||
| eff972a62e | |||
| 113ecec18f | |||
| 427fd5515d | |||
| 7df1ca8c6e | |||
| b9106134ee |
13
CHANGELOG.md
13
CHANGELOG.md
@@ -1,5 +1,18 @@
|
|||||||
## PVC Changelog
|
## PVC Changelog
|
||||||
|
|
||||||
|
###### [v1.0.3](https://github.com/parallelvirtualcluster/pvc/releases/tag/v1.0.3)
|
||||||
|
|
||||||
|
* Fixes silent errors in the dnsmasq DHCP lease handler which can prevent leases from updating
|
||||||
|
* Improves the 3-debootstrap.py provisioner example script to work with Debian 13+
|
||||||
|
|
||||||
|
###### [v1.0.2](https://github.com/parallelvirtualcluster/pvc/releases/tag/v1.0.2)
|
||||||
|
|
||||||
|
* [Worker Daemon] [Bugfix] Fixed a bug in the calling of osd create-db-vg command worker
|
||||||
|
|
||||||
|
###### [v1.0.1](https://github.com/parallelvirtualcluster/pvc/releases/tag/v1.0.1)
|
||||||
|
|
||||||
|
* [CLI Client] [Bugfix] Fix bug with DELETE endpoints returning invalid data
|
||||||
|
|
||||||
###### [v1.0](https://github.com/parallelvirtualcluster/pvc/releases/tag/v1.0)
|
###### [v1.0](https://github.com/parallelvirtualcluster/pvc/releases/tag/v1.0)
|
||||||
|
|
||||||
**Announcement**: We are pleased to announce PVC 1.0! Functionally speaking, there are only a few minor improvements over the previous 0.9.107, but I believe it's finally time to call this a "1.0" release. Recently I have had much less opportunity to work on PVC as I would like, so some features are still not quite there, but those can arrive in future versions over time.
|
**Announcement**: We are pleased to announce PVC 1.0! Functionally speaking, there are only a few minor improvements over the previous 0.9.107, but I believe it's finally time to call this a "1.0" release. Recently I have had much less opportunity to work on PVC as I would like, so some features are still not quite there, but those can arrive in future versions over time.
|
||||||
|
|||||||
@@ -485,6 +485,8 @@ class VMBuilderScript(VMBuilder):
|
|||||||
"acpid",
|
"acpid",
|
||||||
"acpi-support-base",
|
"acpi-support-base",
|
||||||
"wget",
|
"wget",
|
||||||
|
"ifupdown", # be explicit for Debian 13+
|
||||||
|
"isc-dhcp-server", # required for cloud-init on Debian 13+ where this is no longer standard
|
||||||
]
|
]
|
||||||
|
|
||||||
# We need to know our root disk for later GRUB-ing
|
# We need to know our root disk for later GRUB-ing
|
||||||
@@ -586,12 +588,14 @@ After=multi-user.target
|
|||||||
|
|
||||||
preserve_hostname: true
|
preserve_hostname: true
|
||||||
|
|
||||||
|
network:
|
||||||
|
config: disabled
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
Ec2:
|
Ec2:
|
||||||
metadata_urls: ["http://169.254.169.254:80"]
|
metadata_urls: ["http://169.254.169.254:80"]
|
||||||
max_wait: 30
|
max_wait: 5
|
||||||
timeout: 30
|
timeout: 5
|
||||||
apply_full_imds_network_config: true
|
|
||||||
|
|
||||||
cloud_init_modules:
|
cloud_init_modules:
|
||||||
- migrator
|
- migrator
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ from yaml import load as yload
|
|||||||
from yaml import SafeLoader
|
from yaml import SafeLoader
|
||||||
|
|
||||||
|
|
||||||
VERSION = "1.0"
|
VERSION = "1.0.3"
|
||||||
|
|
||||||
DEFAULT_STORE_DATA = {"cfgfile": "/etc/pvc/pvc.conf"}
|
DEFAULT_STORE_DATA = {"cfgfile": "/etc/pvc/pvc.conf"}
|
||||||
DEFAULT_STORE_FILENAME = "pvc.json"
|
DEFAULT_STORE_FILENAME = "pvc.json"
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ def call_api(
|
|||||||
verify=config["verify_ssl"],
|
verify=config["verify_ssl"],
|
||||||
)
|
)
|
||||||
if operation == "delete":
|
if operation == "delete":
|
||||||
response = patch, delete(
|
response = delete(
|
||||||
uri,
|
uri,
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
headers=headers,
|
headers=headers,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "pvc"
|
name = "pvc"
|
||||||
version = "1.0"
|
version = "1.0.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Click",
|
"Click",
|
||||||
"PyYAML",
|
"PyYAML",
|
||||||
|
|||||||
@@ -2486,7 +2486,7 @@ def osd_worker_remove_osd(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def osd_worker_add_db_vg(zkhandler, celery, device):
|
def osd_worker_add_db_vg(zkhandler, celery, node, device):
|
||||||
# Set up stages
|
# Set up stages
|
||||||
current_stage = 0
|
current_stage = 0
|
||||||
total_stages = 4
|
total_stages = 4
|
||||||
|
|||||||
19
debian/changelog
vendored
19
debian/changelog
vendored
@@ -1,3 +1,22 @@
|
|||||||
|
pvc (1.0.3-0) unstable; urgency=high
|
||||||
|
|
||||||
|
* Fixes silent errors in the dnsmasq DHCP lease handler which can prevent leases from updating
|
||||||
|
* Improves the 3-debootstrap.py provisioner example script to work with Debian 13+
|
||||||
|
|
||||||
|
-- Joshua M. Boniface <joshua@boniface.me> Sun, 01 Mar 2026 22:48:49 -0500
|
||||||
|
|
||||||
|
pvc (1.0.2-0) unstable; urgency=high
|
||||||
|
|
||||||
|
* [Worker Daemon] [Bugfix] Fixed a bug in the calling of osd create-db-vg command worker
|
||||||
|
|
||||||
|
-- Joshua M. Boniface <joshua@boniface.me> Fri, 30 Jan 2026 09:58:00 -0500
|
||||||
|
|
||||||
|
pvc (1.0.1-0) unstable; urgency=high
|
||||||
|
|
||||||
|
* [CLI Client] [Bugfix] Fix bug with DELETE endpoints returning invalid data
|
||||||
|
|
||||||
|
-- Joshua M. Boniface <joshua@boniface.me> Sat, 21 Jun 2025 12:40:33 -0400
|
||||||
|
|
||||||
pvc (1.0-0) unstable; urgency=high
|
pvc (1.0-0) unstable; urgency=high
|
||||||
|
|
||||||
**Announcement**: We are pleased to announce PVC 1.0! Functionally speaking, there are only a few minor improvements over the previous 0.9.107, but I believe it's finally time to call this a "1.0" release. Recently I have had much less opportunity to work on PVC as I would like, so some features are still not quite there, but those can arrive in future versions over time.
|
**Announcement**: We are pleased to announce PVC 1.0! Functionally speaking, there are only a few minor improvements over the previous 0.9.107, but I believe it's finally time to call this a "1.0" release. Recently I have had much less opportunity to work on PVC as I would like, so some features are still not quite there, but those can arrive in future versions over time.
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import os
|
|||||||
import signal
|
import signal
|
||||||
|
|
||||||
# Daemon version
|
# Daemon version
|
||||||
version = "1.0"
|
version = "1.0.3"
|
||||||
|
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
|
|||||||
@@ -3,4 +3,5 @@
|
|||||||
# PVC cluster status check for Check_MK (agent-side)
|
# PVC cluster status check for Check_MK (agent-side)
|
||||||
|
|
||||||
echo "<<<pvc>>>"
|
echo "<<<pvc>>>"
|
||||||
pvc --quiet status --format json
|
hostname -s
|
||||||
|
pvc --quiet cluster status --format json
|
||||||
|
|||||||
@@ -17,24 +17,29 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from .agent_based_api.v1 import *
|
from cmk.agent_based.v2 import *
|
||||||
from cmk.base.check_api import host_name
|
|
||||||
from time import time
|
from time import time
|
||||||
from json import loads
|
from json import loads
|
||||||
|
|
||||||
|
|
||||||
|
def parse_pvc(string_table):
|
||||||
|
hostname = string_table[0][0]
|
||||||
|
data = loads(" ".join(string_table[1]))
|
||||||
|
parsed = (hostname, data)
|
||||||
|
return parsed
|
||||||
|
|
||||||
|
|
||||||
def discover_pvc(section):
|
def discover_pvc(section):
|
||||||
my_node = host_name().split(".")[0]
|
my_node, _ = section
|
||||||
yield Service(item=f"PVC Node {my_node}")
|
yield Service(item=f"PVC Node {my_node}")
|
||||||
yield Service(item="PVC Cluster")
|
yield Service(item="PVC Cluster")
|
||||||
|
|
||||||
|
|
||||||
def check_pvc(item, params, section):
|
def check_pvc(item, params, section):
|
||||||
|
my_node, data = section
|
||||||
state = State.OK
|
state = State.OK
|
||||||
summary = "Stuff"
|
summary = ""
|
||||||
details = None
|
details = None
|
||||||
data = loads(" ".join(section[0]))
|
|
||||||
my_node = host_name().split(".")[0]
|
|
||||||
|
|
||||||
maintenance_map = {
|
maintenance_map = {
|
||||||
"true": "on",
|
"true": "on",
|
||||||
@@ -44,7 +49,6 @@ def check_pvc(item, params, section):
|
|||||||
|
|
||||||
# Node check
|
# Node check
|
||||||
if item == f"PVC Node {my_node}":
|
if item == f"PVC Node {my_node}":
|
||||||
my_node = host_name().split(".")[0]
|
|
||||||
node_health = data["node_health"][my_node]["health"]
|
node_health = data["node_health"][my_node]["health"]
|
||||||
node_messages = data["node_health"][my_node]["messages"]
|
node_messages = data["node_health"][my_node]["messages"]
|
||||||
|
|
||||||
@@ -85,7 +89,12 @@ def check_pvc(item, params, section):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
register.check_plugin(
|
agent_section_pvc = AgentSection(
|
||||||
|
name="pvc",
|
||||||
|
parse_function=parse_pvc,
|
||||||
|
)
|
||||||
|
|
||||||
|
check_plugin_pvc = CheckPlugin(
|
||||||
name="pvc",
|
name="pvc",
|
||||||
service_name="%s",
|
service_name="%s",
|
||||||
check_ruleset_name="pvc",
|
check_ruleset_name="pvc",
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ import re
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
# Daemon version
|
# Daemon version
|
||||||
version = "1.0"
|
version = "1.0.3"
|
||||||
|
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
|
|||||||
@@ -130,6 +130,8 @@ def read_lease_database(zk_conn, zk_leases_key):
|
|||||||
def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clientid):
|
def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clientid):
|
||||||
if not hostname:
|
if not hostname:
|
||||||
hostname = ""
|
hostname = ""
|
||||||
|
try:
|
||||||
|
zk_conn.delete("{}/{}".format(zk_leases_key, macaddr), recursive=True)
|
||||||
transaction = zk_conn.transaction()
|
transaction = zk_conn.transaction()
|
||||||
transaction.create("{}/{}".format(zk_leases_key, macaddr), "".encode("ascii"))
|
transaction.create("{}/{}".format(zk_leases_key, macaddr), "".encode("ascii"))
|
||||||
transaction.create(
|
transaction.create(
|
||||||
@@ -145,6 +147,8 @@ def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clienti
|
|||||||
"{}/{}/clientid".format(zk_leases_key, macaddr), clientid.encode("ascii")
|
"{}/{}/clientid".format(zk_leases_key, macaddr), clientid.encode("ascii")
|
||||||
)
|
)
|
||||||
transaction.commit()
|
transaction.commit()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"FATAL: {e}")
|
||||||
|
|
||||||
|
|
||||||
def del_lease(zk_conn, zk_leases_key, macaddr, expiry):
|
def del_lease(zk_conn, zk_leases_key, macaddr, expiry):
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ from daemon_lib.automirror import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Daemon version
|
# Daemon version
|
||||||
version = "1.0"
|
version = "1.0.3"
|
||||||
|
|
||||||
|
|
||||||
config = cfg.get_configuration()
|
config = cfg.get_configuration()
|
||||||
|
|||||||
Reference in New Issue
Block a user