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

Merge branch 'slapformat'

parents fe69e4e9 2c9ea680
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)
-----------------
......
from setuptools import setup, find_packages
import glob
import os
version = '0.34.1-dev'
from slapos.version import version
name = 'slapos.core'
long_description = open("README.txt").read() + "\n" + \
open("CHANGES.txt").read() + "\n"
......
......@@ -43,6 +43,7 @@ from slapos.grid.slapgrid import runUsageReport as report
from slapos.grid.svcbackend import supervisord
from slapos.grid.svcbackend import supervisorctl
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
# like https://github.com/dhellmann/cliff or https://github.com/docopt/docopt.
......@@ -173,7 +174,7 @@ def main():
else:
is_node = False
usage = """SlapOS command line interface.
usage = """SlapOS %s command line interface.
For more informations, refer to SlapOS documentation.
Client subcommands usage:
......@@ -195,7 +196,7 @@ Node subcommands usage:
slapos node status <process>
slapos node supervisorctl
slapos node supervisord
"""
""" % version
# Parse arguments
# XXX remove the "positional arguments" from help message
......
# -*- coding: utf-8 -*-
# vim: set et sts=2:
##############################################################################
#
# Copyright (c) 2010, 2011, 2012 Vifib SARL and Contributors.
......@@ -46,6 +47,15 @@ import subprocess
import sys
import threading
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):
_os = os
......@@ -253,9 +263,31 @@ class Computer(object):
"""
computer_dict = _getDict(self)
output_file = open(path_to_xml,'w')
output_file.write(xml_marshaller.dumps(computer_dict))
output_file.close()
new_xml = xml_marshaller.dumps(computer_dict)
new_pretty_xml = prettify_xml(new_xml)
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
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