source: dassmodus/trunk/dassmodus/dassmodus/dassmodus/deploywizard.py@ 955

Last change on this file since 955 was 955, checked in by pstorz, on Sep 28, 2011 at 11:35:12 AM

forgotten files

File size: 3.9 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3#
4
5from PyQt4 import QtGui, QtCore
6from PyQt4.QtCore import *
7from PyQt4.QtGui import *
8
9import socket
10import string
11import random
12import Ui_deploywizard
13
14import time, difflib
15
16import xmlrpclib
17import sys
18import htmldiffview
19
20#server_url = 'https://localhost:4443'
21
22
23
24
25class deploywizard(QtGui.QWizard, Ui_deploywizard.Ui_Wizard,):
26
27 def __init__(self, serverproxy, cfgstring, daemontype, parent = None):
28 super(deploywizard, self).__init__()
29 self.setupUi(self)
30 self.serverproxy = serverproxy
31 self.diffhtml = ''
32 self.cfgstring = cfgstring
33 self.daemontype = daemontype
34
35
36
37 self.connect(self.pushButton, QtCore.SIGNAL('clicked()'), self.showHTMLDiff)
38 self.connect(self.pushButton_2, QtCore.SIGNAL('clicked()'), self.do_deployment)
39
40 def initializePage(self, pagenumber):
41 if pagenumber == 1:
42
43 oldconf = self.serverproxy.get_conf('dir').splitlines(True)
44
45 newconf = self.cfgstring.splitlines(True)
46 diffunified = difflib.unified_diff(oldconf, newconf, 'old', 'new', n=0)
47 self.diffhtml = difflib.HtmlDiff(2,50).make_file(oldconf, newconf, 'old',
48 'new', context=True, numlines=3)
49 t = ''
50 for line in diffunified:
51 t += line
52 self.textBrowser.setText(t)
53
54 #elif pagenumber == 2:
55
56
57 def showHTMLDiff(self):
58 dialog = htmldiffview.htmldiffdialog(self)
59 dialog.webView.setHtml(self.diffhtml)
60 dialog.exec_()
61
62 def do_deployment(self):
63 t = 'Deploying the configuration file...\n'; self.textBrowser_2.setText(t)
64 t += 'transferring file to target system...\n'; self.textBrowser_2.setText(t)
65
66 self.serverproxy.set_conf('dir', self.cfgstring)
67 t += 'transfer completed\n'; self.textBrowser_2.setText(t)
68 t += 'restarting daemon...\n'; self.textBrowser_2.setText(t)
69
70 if self.daemontype == 'director':
71 t += 'reLOADing director daemon...\n'; self.textBrowser_2.setText(t)
72 result, out, err = self.serverproxy.reload_director()
73 t += out;self.textBrowser_2.setText(t)
74 if result != 0: # we cannot reload, so we try to restart
75 t += 'reload failed, restarting...\n'; self.textBrowser_2.setText(t)
76 t += self.serverproxy.restart_daemon(self.daemontype)[1]
77 else:
78 t += self.serverproxy.restart_daemon(self.daemontype)[1]
79
80 t += 'checking for daemon running\n'; self.textBrowser_2.setText(t)
81
82 if self.serverproxy.check_for_process('bacula-dir'):
83 t += 'OK, is running'; self.textBrowser_2.setText(t)
84 else:
85 t += 'ERROR, is not running, rolling back...\n'; self.textBrowser_2.setText(t)
86
87if __name__ == "__main__":
88
89 class SafeTransportWithCert(xmlrpclib.SafeTransport):
90# __cert_file = DFLT_CERTFILE
91# __key_file = DFLT_KEYFILE
92 __cert_file = '../../certs/client-cert.pem' # Replace with your PEM formatted key file
93 __key_file = '../../certs/client-cert.pem' # Replace with your PEM formatted certificate file
94
95 def make_connection(self,host):
96 host_with_cert = (host, {
97 'key_file' : self.__key_file,
98 'cert_file' : self.__cert_file
99 } )
100 return xmlrpclib.SafeTransport.make_connection(
101 self,host_with_cert)
102
103
104 import sys
105 print "started"
106
107 server_url = 'https://bacula-old:4443'
108 transport = SafeTransportWithCert()
109 serverproxy = xmlrpclib.ServerProxy(server_url,
110 transport = transport)
111
112
113 app = QtGui.QApplication(sys.argv)
114 app.setOrganizationDomain("dass-it.de")
115 app.setOrganizationName("dassIT GmbH")
116 app.setApplicationName("deploywizard")
117 app.setWindowIcon(QIcon(":/icons/dassit_logo.png"))
118 testconf = open('../configs/bacula-dir.conf','r').read().decode('UTF-8')
119 wizard = deploywizard(serverproxy,testconf,'director')
120 wizard.exec_()
121
122
Note: See TracBrowser for help on using the repository browser.