Compare commits
3 Commits
master
...
8283f972e4
| Author | SHA1 | Date | |
|---|---|---|---|
| 8283f972e4 | |||
|
|
0d97ba1f93 | ||
|
|
768d435445 |
21
CHANGELOG.md
21
CHANGELOG.md
@@ -1,26 +1,5 @@
|
|||||||
## PVC Changelog
|
## PVC Changelog
|
||||||
|
|
||||||
###### [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)
|
|
||||||
|
|
||||||
**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.
|
|
||||||
**Enhancement**: The PVC CLI has been made much more efficient in terms of imports, allowing it to run on much lower spec hardware (in my case, on a small SBC). It's still not perfect, but multi-second import times are no longer an issue. The CLI client has also been moved to a more modern build system in preparation for Debian 13 "Trixie".
|
|
||||||
|
|
||||||
* [Daemons] Add cluster name to outputs during startup
|
|
||||||
* [CLI Client] Translate domain UUIDs to names in full node detail output for better readability
|
|
||||||
* [CLI Client] Fix colouring bug for mirror state
|
|
||||||
* [CLI Client] Significantly improve import efficiency throughout the client to avoid long load times on slow hardware
|
|
||||||
* [CLI Client] Port build to pyproject.toml and increase Debuild compat to 13
|
|
||||||
* [API Daemon] Fix bug with RBD list update after VM rename
|
|
||||||
* [API Daemon] Fix bug/crash if Ceph volume stats are invalid/empty
|
|
||||||
|
|
||||||
###### [v0.9.107](https://github.com/parallelvirtualcluster/pvc/releases/tag/v0.9.107)
|
###### [v0.9.107](https://github.com/parallelvirtualcluster/pvc/releases/tag/v0.9.107)
|
||||||
|
|
||||||
* [Worker Daemon] Fixes a bug where snapshot removal fails during autobackups
|
* [Worker Daemon] Fixes a bug where snapshot removal fails during autobackups
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," health
|
|||||||
sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," worker-daemon/pvcworkerd/Daemon.py
|
sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," worker-daemon/pvcworkerd/Daemon.py
|
||||||
sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," api-daemon/pvcapid/Daemon.py
|
sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," api-daemon/pvcapid/Daemon.py
|
||||||
sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," client-cli/pyproject.toml
|
sed -i "s,version = \"${current_version}\",version = \"${new_version}\"," client-cli/pyproject.toml
|
||||||
sed -i "s,VERSION = \"${current_version}\",VERSION = \"${new_version}\"," client-cli/pvc/cli/helpers.py
|
sed -i "s,VERSION = \"${current_version}\",VERSION = \"${new_version}\"," client-cli/pvc/cli/cli.py
|
||||||
echo ${new_version} > .version
|
echo ${new_version} > .version
|
||||||
|
|
||||||
changelog_tmpdir=$( mktemp -d )
|
changelog_tmpdir=$( mktemp -d )
|
||||||
@@ -48,7 +48,7 @@ echo -e "${deb_changelog_new}" >> ${deb_changelog_file}
|
|||||||
echo -e "${deb_changelog_orig}" >> ${deb_changelog_file}
|
echo -e "${deb_changelog_orig}" >> ${deb_changelog_file}
|
||||||
mv ${deb_changelog_file} debian/changelog
|
mv ${deb_changelog_file} debian/changelog
|
||||||
|
|
||||||
git add node-daemon/pvcnoded/Daemon.py health-daemon/pvchealthd/Daemon.py worker-daemon/pvcworkerd/Daemon.py api-daemon/pvcapid/Daemon.py client-cli/pvc/cli/helpers.py client-cli/pyproject.toml debian/changelog CHANGELOG.md .version
|
git add node-daemon/pvcnoded/Daemon.py health-daemon/pvchealthd/Daemon.py worker-daemon/pvcworkerd/Daemon.py api-daemon/pvcapid/Daemon.py client-cli/setup.py debian/changelog CHANGELOG.md .version
|
||||||
git commit -v
|
git commit -v
|
||||||
|
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ import click
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
VERSION = "0.9.107"
|
||||||
|
|
||||||
CONTEXT_SETTINGS = dict(
|
CONTEXT_SETTINGS = dict(
|
||||||
help_option_names=["-h", "--help"], max_content_width=MAX_CONTENT_WIDTH
|
help_option_names=["-h", "--help"], max_content_width=MAX_CONTENT_WIDTH
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ from yaml import load as yload
|
|||||||
from yaml import SafeLoader
|
from yaml import SafeLoader
|
||||||
|
|
||||||
|
|
||||||
VERSION = "1.0.2"
|
|
||||||
|
|
||||||
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"
|
||||||
DEFAULT_API_PREFIX = "/api/v1"
|
DEFAULT_API_PREFIX = "/api/v1"
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ from requests import get, post, put, patch, delete, Response
|
|||||||
from requests.exceptions import ConnectionError
|
from requests.exceptions import ConnectionError
|
||||||
from time import time
|
from time import time
|
||||||
from urllib3 import disable_warnings
|
from urllib3 import disable_warnings
|
||||||
from pvc.cli.helpers import VERSION
|
from pvc.cli.cli import VERSION
|
||||||
|
|
||||||
|
|
||||||
def format_bytes(size_bytes):
|
def format_bytes(size_bytes):
|
||||||
@@ -231,7 +231,7 @@ def call_api(
|
|||||||
verify=config["verify_ssl"],
|
verify=config["verify_ssl"],
|
||||||
)
|
)
|
||||||
if operation == "delete":
|
if operation == "delete":
|
||||||
response = delete(
|
response = patch, 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.2"
|
version = "0.9.107"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Click",
|
"Click",
|
||||||
"PyYAML",
|
"PyYAML",
|
||||||
|
|||||||
@@ -555,16 +555,9 @@ def getCephVolumes(zkhandler, pool):
|
|||||||
def getVolumeInformation(zkhandler, pool, volume):
|
def getVolumeInformation(zkhandler, pool, volume):
|
||||||
# Parse the stats data
|
# Parse the stats data
|
||||||
volume_stats_raw = zkhandler.read(("volume.stats", f"{pool}/{volume}"))
|
volume_stats_raw = zkhandler.read(("volume.stats", f"{pool}/{volume}"))
|
||||||
try:
|
|
||||||
volume_stats = dict(json.loads(volume_stats_raw))
|
volume_stats = dict(json.loads(volume_stats_raw))
|
||||||
# Format the size to something nicer
|
# Format the size to something nicer
|
||||||
volume_stats["size"] = format_bytes_tohuman(volume_stats["size"])
|
volume_stats["size"] = format_bytes_tohuman(volume_stats["size"])
|
||||||
except Exception:
|
|
||||||
volume_stats = dict(
|
|
||||||
json.loads(
|
|
||||||
f'{"name":"{volume}","id":"","size":0,"objects":0,"order":0,"object_size":0,"snapshot_count":0,"block_name_prefix":"","format":0,"features":[],"op_features":[],"flags":[],"create_timestamp":"","access_timestamp":"","modify_timestamp":""}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
volume_information = {"name": volume, "pool": pool, "stats": volume_stats}
|
volume_information = {"name": volume, "pool": pool, "stats": volume_stats}
|
||||||
return volume_information
|
return volume_information
|
||||||
@@ -2486,7 +2479,7 @@ def osd_worker_remove_osd(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def osd_worker_add_db_vg(zkhandler, celery, node, device):
|
def osd_worker_add_db_vg(zkhandler, celery, device):
|
||||||
# Set up stages
|
# Set up stages
|
||||||
current_stage = 0
|
current_stage = 0
|
||||||
total_stages = 4
|
total_stages = 4
|
||||||
|
|||||||
27
debian/changelog
vendored
27
debian/changelog
vendored
@@ -1,30 +1,3 @@
|
|||||||
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
|
|
||||||
|
|
||||||
**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.
|
|
||||||
**Enhancement**: The PVC CLI has been made much more efficient in terms of imports, allowing it to run on much lower spec hardware (in my case, on a small SBC). It's still not perfect, but multi-second import times are no longer an issue. The CLI client has also been moved to a more modern build system in preparation for Debian 13 "Trixie".
|
|
||||||
|
|
||||||
* [Daemons] Add cluster name to outputs during startup
|
|
||||||
* [CLI Client] Translate domain UUIDs to names in full node detail output for better readability
|
|
||||||
* [CLI Client] Fix colouring bug for mirror state
|
|
||||||
* [CLI Client] Significantly improve import efficiency throughout the client to avoid long load times on slow hardware
|
|
||||||
* [CLI Client] Port build to pyproject.toml and increase Debuild compat to 13
|
|
||||||
* [API Daemon] Fix bug with RBD list update after VM rename
|
|
||||||
* [API Daemon] Fix bug/crash if Ceph volume stats are invalid/empty
|
|
||||||
|
|
||||||
-- Joshua M. Boniface <joshua@boniface.me> Thu, 05 Jun 2025 00:04:54 -0400
|
|
||||||
|
|
||||||
pvc (0.9.107-0) unstable; urgency=high
|
pvc (0.9.107-0) unstable; urgency=high
|
||||||
|
|
||||||
* [Worker Daemon] Fixes a bug where snapshot removal fails during autobackups
|
* [Worker Daemon] Fixes a bug where snapshot removal fails during autobackups
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import os
|
|||||||
import signal
|
import signal
|
||||||
|
|
||||||
# Daemon version
|
# Daemon version
|
||||||
version = "1.0.2"
|
version = "0.9.107"
|
||||||
|
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
|
|||||||
@@ -3,5 +3,4 @@
|
|||||||
# PVC cluster status check for Check_MK (agent-side)
|
# PVC cluster status check for Check_MK (agent-side)
|
||||||
|
|
||||||
echo "<<<pvc>>>"
|
echo "<<<pvc>>>"
|
||||||
hostname -s
|
pvc --quiet status --format json
|
||||||
pvc --quiet cluster status --format json
|
|
||||||
|
|||||||
@@ -17,29 +17,24 @@
|
|||||||
# 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 cmk.agent_based.v2 import *
|
from .agent_based_api.v1 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, _ = section
|
my_node = host_name().split(".")[0]
|
||||||
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 = ""
|
summary = "Stuff"
|
||||||
details = None
|
details = None
|
||||||
|
data = loads(" ".join(section[0]))
|
||||||
|
my_node = host_name().split(".")[0]
|
||||||
|
|
||||||
maintenance_map = {
|
maintenance_map = {
|
||||||
"true": "on",
|
"true": "on",
|
||||||
@@ -49,6 +44,7 @@ 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"]
|
||||||
|
|
||||||
@@ -89,12 +85,7 @@ def check_pvc(item, params, section):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
agent_section_pvc = AgentSection(
|
register.check_plugin(
|
||||||
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.2"
|
version = "0.9.107"
|
||||||
|
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ from daemon_lib.automirror import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Daemon version
|
# Daemon version
|
||||||
version = "1.0.2"
|
version = "0.9.107"
|
||||||
|
|
||||||
|
|
||||||
config = cfg.get_configuration()
|
config = cfg.get_configuration()
|
||||||
|
|||||||
Reference in New Issue
Block a user