Commit 8a4dda6c authored by Marco Mariani's avatar Marco Mariani

Merge branch 'slapformat'

parents fe69e4e9 2c9ea680
Changes Changes
======= =======
0.34.1 (unreleased)
-------------------
* slapos: display version number with help [Marco Mariani]
* slapformat: backup slapos.xml to a zip archive at every change [Marco Mariani]
0.34 (2013-01-23) 0.34 (2013-01-23)
----------------- -----------------
......
from setuptools import setup, find_packages from setuptools import setup, find_packages
import glob import glob
import os import os
version = '0.34.1-dev'
from slapos.version import version
name = 'slapos.core' name = 'slapos.core'
long_description = open("README.txt").read() + "\n" + \ long_description = open("README.txt").read() + "\n" + \
open("CHANGES.txt").read() + "\n" open("CHANGES.txt").read() + "\n"
......
...@@ -43,6 +43,7 @@ from slapos.grid.slapgrid import runUsageReport as report ...@@ -43,6 +43,7 @@ from slapos.grid.slapgrid import runUsageReport as report
from slapos.grid.svcbackend import supervisord from slapos.grid.svcbackend import supervisord
from slapos.grid.svcbackend import supervisorctl from slapos.grid.svcbackend import supervisorctl
from slapos.register.register import main as register from slapos.register.register import main as register
from slapos.version import version
# Note: this whole file is a hack. We should better try dedicated library # Note: this whole file is a hack. We should better try dedicated library
# like https://github.com/dhellmann/cliff or https://github.com/docopt/docopt. # like https://github.com/dhellmann/cliff or https://github.com/docopt/docopt.
...@@ -173,7 +174,7 @@ def main(): ...@@ -173,7 +174,7 @@ def main():
else: else:
is_node = False is_node = False
usage = """SlapOS command line interface. usage = """SlapOS %s command line interface.
For more informations, refer to SlapOS documentation. For more informations, refer to SlapOS documentation.
Client subcommands usage: Client subcommands usage:
...@@ -195,7 +196,7 @@ Node subcommands usage: ...@@ -195,7 +196,7 @@ Node subcommands usage:
slapos node status <process> slapos node status <process>
slapos node supervisorctl slapos node supervisorctl
slapos node supervisord slapos node supervisord
""" """ % version
# Parse arguments # Parse arguments
# XXX remove the "positional arguments" from help message # XXX remove the "positional arguments" from help message
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vim: set et sts=2:
############################################################################## ##############################################################################
# #
# Copyright (c) 2010, 2011, 2012 Vifib SARL and Contributors. # Copyright (c) 2010, 2011, 2012 Vifib SARL and Contributors.
...@@ -46,6 +47,15 @@ import subprocess ...@@ -46,6 +47,15 @@ import subprocess
import sys import sys
import threading import threading
import time import time
import zipfile
import lxml.etree
def prettify_xml(xml):
root = lxml.etree.fromstring(xml)
return lxml.etree.tostring(root, pretty_print=True)
class OS(object): class OS(object):
_os = os _os = os
...@@ -253,9 +263,31 @@ class Computer(object): ...@@ -253,9 +263,31 @@ class Computer(object):
""" """
computer_dict = _getDict(self) computer_dict = _getDict(self)
output_file = open(path_to_xml,'w') new_xml = xml_marshaller.dumps(computer_dict)
output_file.write(xml_marshaller.dumps(computer_dict)) new_pretty_xml = prettify_xml(new_xml)
output_file.close()
path_to_archive = path_to_xml + '.zip'
if os.path.exists(path_to_archive):
# the archive file exists, we only backup if something has changed
with open(path_to_xml, 'rb') as fin:
if fin.read() == new_pretty_xml:
# computer configuration did not change, nothing to write
return
self.backup_xml(path_to_archive, path_to_xml)
with open(path_to_xml,'wb') as fout:
fout.write(new_pretty_xml)
def backup_xml(self, path_to_archive, path_to_xml):
xml_content = open(path_to_xml).read()
saved_filename = path_to_xml + time.strftime('.%Y%M%d-%H:%M')
with zipfile.ZipFile(path_to_archive, 'a') as archive:
archive.writestr(saved_filename, xml_content, zipfile.ZIP_DEFLATED)
@classmethod @classmethod
def load(cls, path_to_xml, reference, ipv6_interface): def load(cls, path_to_xml, reference, ipv6_interface):
......
version = '0.34.1-dev'
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment