Merge lp:~vibhavp/landscape-client/landscape-client-typo.fix into lp:~landscape/landscape-client/trunk
- landscape-client-typo.fix
- Merge into trunk
Proposed by
Vibhav Pant
Status: | Merged | ||||
---|---|---|---|---|---|
Merge reported by: | Thomas Herve | ||||
Merged at revision: | not available | ||||
Proposed branch: | lp:~vibhavp/landscape-client/landscape-client-typo.fix | ||||
Merge into: | lp:~landscape/landscape-client/trunk | ||||
Diff against target: |
77605 lines (+75764/-0) (has conflicts) 349 files modified
LICENSE (+340/-0) Makefile (+113/-0) README (+46/-0) applications/landscape-client-settings.desktop.in (+17/-0) apt-update/Makefile (+7/-0) apt-update/apt-update.c (+81/-0) dbus-1/com.canonical.LandscapeClientRegistration.conf (+16/-0) dbus-1/com.canonical.LandscapeClientRegistration.service (+4/-0) dbus-1/com.canonical.LandscapeClientSettings.conf (+16/-0) dbus-1/com.canonical.LandscapeClientSettings.service (+4/-0) dbus/landscape.conf (+62/-0) debian/README.source (+15/-0) debian/changelog (+1189/-0) debian/cloud-default.conf (+7/-0) debian/compat (+1/-0) debian/control (+76/-0) debian/copyright (+36/-0) debian/landscape-client-ui-install.install (+4/-0) debian/landscape-client-ui.install (+9/-0) debian/landscape-client.config (+64/-0) debian/landscape-client.docs (+1/-0) debian/landscape-client.init (+112/-0) debian/landscape-client.install (+14/-0) debian/landscape-client.logrotate (+20/-0) debian/landscape-client.postinst (+150/-0) debian/landscape-client.postrm (+50/-0) debian/landscape-client.prerm (+45/-0) debian/landscape-client.templates (+77/-0) debian/landscape-common.config (+10/-0) debian/landscape-common.dirs (+1/-0) debian/landscape-common.install (+3/-0) debian/landscape-common.postinst (+107/-0) debian/landscape-common.postrm (+40/-0) debian/landscape-common.prerm (+41/-0) debian/landscape-common.templates (+20/-0) debian/landscape-sysinfo.wrapper (+14/-0) debian/po/POTFILES.in (+2/-0) debian/po/templates.pot (+224/-0) debian/pycompat (+1/-0) debian/rules (+128/-0) dev/dns-server (+99/-0) dev/landscape-client-vm (+178/-0) dev/run-piuparts (+154/-0) dev/upload-to-ppa (+123/-0) glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml (+37/-0) icons/preferences-management-service.svg (+62/-0) landscape-client.conf (+12/-0) landscape/__init__.py (+57/-0) landscape/accumulate.py (+112/-0) landscape/amp.py (+107/-0) landscape/broker/__init__.py (+3/-0) landscape/broker/amp.py (+142/-0) landscape/broker/client.py (+200/-0) landscape/broker/config.py (+98/-0) landscape/broker/exchange.py (+436/-0) landscape/broker/exchangestore.py (+113/-0) landscape/broker/ping.py (+143/-0) landscape/broker/registration.py (+437/-0) landscape/broker/server.py (+274/-0) landscape/broker/service.py (+98/-0) landscape/broker/store.py (+342/-0) landscape/broker/tests/badprivate.ssl (+15/-0) landscape/broker/tests/badpublic.ssl (+23/-0) landscape/broker/tests/helpers.py (+209/-0) landscape/broker/tests/private.ssl (+15/-0) landscape/broker/tests/public.ssl (+22/-0) landscape/broker/tests/test_amp.py (+268/-0) landscape/broker/tests/test_client.py (+302/-0) landscape/broker/tests/test_config.py (+110/-0) landscape/broker/tests/test_exchange.py (+997/-0) landscape/broker/tests/test_exchangestore.py (+84/-0) landscape/broker/tests/test_ping.py (+262/-0) landscape/broker/tests/test_registration.py (+1148/-0) landscape/broker/tests/test_server.py (+482/-0) landscape/broker/tests/test_service.py (+102/-0) landscape/broker/tests/test_store.py (+443/-0) landscape/broker/tests/test_transport.py (+147/-0) landscape/broker/transport.py (+124/-0) landscape/configuration.py (+713/-0) landscape/constants.py (+32/-0) landscape/deployment.py (+367/-0) landscape/diff.py (+23/-0) landscape/hal.py (+52/-0) landscape/lib/__init__.py (+6/-0) landscape/lib/amp.py (+499/-0) landscape/lib/bootstrap.py (+63/-0) landscape/lib/bpickle.py (+161/-0) landscape/lib/bpickle_dbus.py (+65/-0) landscape/lib/command.py (+38/-0) landscape/lib/configobj.py (+3728/-0) landscape/lib/disk.py (+70/-0) landscape/lib/dns.py (+78/-0) landscape/lib/fd.py (+25/-0) landscape/lib/fetch.py (+190/-0) landscape/lib/fs.py (+54/-0) landscape/lib/gpg.py (+38/-0) landscape/lib/hashlib.py (+14/-0) landscape/lib/initgroups.c (+49/-0) landscape/lib/jiffies.py (+53/-0) landscape/lib/lock.py (+32/-0) landscape/lib/log.py (+14/-0) landscape/lib/lsb_release.py (+26/-0) landscape/lib/md5crypt.py (+159/-0) landscape/lib/message.py (+49/-0) landscape/lib/monitor.py (+188/-0) landscape/lib/network.py (+203/-0) landscape/lib/persist.py (+622/-0) landscape/lib/process.py (+157/-0) landscape/lib/scriptcontent.py (+15/-0) landscape/lib/sequenceranges.py (+196/-0) landscape/lib/store.py (+39/-0) landscape/lib/sysstats.py (+93/-0) landscape/lib/tag.py (+21/-0) landscape/lib/tests/test_amp.py (+774/-0) landscape/lib/tests/test_bootstrap.py (+156/-0) landscape/lib/tests/test_bpickle.py (+50/-0) landscape/lib/tests/test_command.py (+32/-0) landscape/lib/tests/test_disk.py (+90/-0) landscape/lib/tests/test_dns.py (+208/-0) landscape/lib/tests/test_fd.py (+81/-0) landscape/lib/tests/test_fetch.py (+457/-0) landscape/lib/tests/test_fs.py (+83/-0) landscape/lib/tests/test_gpg.py (+78/-0) landscape/lib/tests/test_lock.py (+31/-0) landscape/lib/tests/test_lsb_release.py (+33/-0) landscape/lib/tests/test_monitor.py (+266/-0) landscape/lib/tests/test_network.py (+181/-0) landscape/lib/tests/test_persist.py (+486/-0) landscape/lib/tests/test_process.py (+106/-0) landscape/lib/tests/test_scriptcontent.py (+24/-0) landscape/lib/tests/test_sequenceranges.py (+296/-0) landscape/lib/tests/test_sysstats.py (+197/-0) landscape/lib/tests/test_tag.py (+38/-0) landscape/lib/tests/test_timestamp.py (+20/-0) landscape/lib/tests/test_twisted_util.py (+131/-0) landscape/lib/tests/test_vm_info.py (+159/-0) landscape/lib/tests/test_warning.py (+30/-0) landscape/lib/timestamp.py (+7/-0) landscape/lib/twisted_amp.py (+2223/-0) landscape/lib/twisted_util.py (+116/-0) landscape/lib/vm_info.py (+54/-0) landscape/lib/warning.py (+14/-0) landscape/log.py (+50/-0) landscape/manager/__init__.py (+4/-0) landscape/manager/aptsources.py (+171/-0) landscape/manager/config.py (+62/-0) landscape/manager/customgraph.py (+254/-0) landscape/manager/eucalyptus.py (+239/-0) landscape/manager/fakepackagemanager.py (+57/-0) landscape/manager/hardwareinfo.py (+28/-0) landscape/manager/manager.py (+18/-0) landscape/manager/packagemanager.py (+85/-0) landscape/manager/plugin.py (+47/-0) landscape/manager/processkiller.py (+73/-0) landscape/manager/scriptexecution.py (+390/-0) landscape/manager/service.py (+59/-0) landscape/manager/shutdownmanager.py (+145/-0) landscape/manager/store.py (+83/-0) landscape/manager/tests/test_aptsources.py (+402/-0) landscape/manager/tests/test_config.py (+59/-0) landscape/manager/tests/test_customgraph.py (+707/-0) landscape/manager/tests/test_eucalyptus.py (+383/-0) landscape/manager/tests/test_fakepackagemanager.py (+70/-0) landscape/manager/tests/test_hardwareinfo.py (+45/-0) landscape/manager/tests/test_manager.py (+33/-0) landscape/manager/tests/test_packagemanager.py (+344/-0) landscape/manager/tests/test_plugin.py (+74/-0) landscape/manager/tests/test_processkiller.py (+225/-0) landscape/manager/tests/test_scriptexecution.py (+954/-0) landscape/manager/tests/test_service.py (+63/-0) landscape/manager/tests/test_shutdownmanager.py (+133/-0) landscape/manager/tests/test_store.py (+64/-0) landscape/manager/tests/test_usermanager.py (+1395/-0) landscape/manager/usermanager.py (+174/-0) landscape/message_schemas.py (+416/-0) landscape/monitor/__init__.py (+4/-0) landscape/monitor/activeprocessinfo.py (+78/-0) landscape/monitor/aptpreferences.py (+61/-0) landscape/monitor/computerinfo.py (+94/-0) landscape/monitor/computeruptime.py (+175/-0) landscape/monitor/config.py (+34/-0) landscape/monitor/hardwareinventory.py (+114/-0) landscape/monitor/loadaverage.py (+59/-0) landscape/monitor/memoryinfo.py (+64/-0) landscape/monitor/monitor.py (+34/-0) landscape/monitor/mountinfo.py (+228/-0) landscape/monitor/networkactivity.py (+119/-0) landscape/monitor/networkdevice.py (+24/-0) landscape/monitor/packagemonitor.py (+157/-0) landscape/monitor/plugin.py (+92/-0) landscape/monitor/processorinfo.py (+267/-0) landscape/monitor/rebootrequired.py (+65/-0) landscape/monitor/service.py (+63/-0) landscape/monitor/temperature.py (+73/-0) landscape/monitor/tests/test_activeprocessinfo.py (+639/-0) landscape/monitor/tests/test_aptpreferences.py (+177/-0) landscape/monitor/tests/test_computerinfo.py (+327/-0) landscape/monitor/tests/test_computeruptime.py (+333/-0) landscape/monitor/tests/test_config.py (+32/-0) landscape/monitor/tests/test_hardwareinventory.py (+273/-0) landscape/monitor/tests/test_loadaverage.py (+156/-0) landscape/monitor/tests/test_memoryinfo.py (+181/-0) landscape/monitor/tests/test_monitor.py (+67/-0) landscape/monitor/tests/test_mountinfo.py (+751/-0) landscape/monitor/tests/test_networkactivity.py (+218/-0) landscape/monitor/tests/test_networkdevice.py (+58/-0) landscape/monitor/tests/test_packagemonitor.py (+268/-0) landscape/monitor/tests/test_plugin.py (+143/-0) landscape/monitor/tests/test_processorinfo.py (+535/-0) landscape/monitor/tests/test_rebootrequired.py (+123/-0) landscape/monitor/tests/test_service.py (+88/-0) landscape/monitor/tests/test_temperature.py (+172/-0) landscape/monitor/tests/test_usermonitor.py (+332/-0) landscape/monitor/usermonitor.py (+132/-0) landscape/package/changer.py (+399/-0) landscape/package/facade.py (+1075/-0) landscape/package/interface.py (+84/-0) landscape/package/releaseupgrader.py (+338/-0) landscape/package/reporter.py (+734/-0) landscape/package/skeleton.py (+181/-0) landscape/package/store.py (+496/-0) landscape/package/taskhandler.py (+292/-0) landscape/package/tests/helpers.py (+621/-0) landscape/package/tests/test_changer.py (+1691/-0) landscape/package/tests/test_facade.py (+3099/-0) landscape/package/tests/test_interface.py (+34/-0) landscape/package/tests/test_releaseupgrader.py (+992/-0) landscape/package/tests/test_reporter.py (+2088/-0) landscape/package/tests/test_skeleton.py (+319/-0) landscape/package/tests/test_store.py (+714/-0) landscape/package/tests/test_taskhandler.py (+530/-0) landscape/patch.py (+111/-0) landscape/plugin.py (+60/-0) landscape/reactor.py (+419/-0) landscape/schema.py (+235/-0) landscape/service.py (+124/-0) landscape/sysinfo/deployment.py (+132/-0) landscape/sysinfo/disk.py (+82/-0) landscape/sysinfo/landscapelink.py (+13/-0) landscape/sysinfo/load.py (+13/-0) landscape/sysinfo/loggedinusers.py (+17/-0) landscape/sysinfo/memory.py (+20/-0) landscape/sysinfo/network.py (+37/-0) landscape/sysinfo/processes.py (+29/-0) landscape/sysinfo/sysinfo.py (+256/-0) landscape/sysinfo/temperature.py (+24/-0) landscape/sysinfo/testplugin.py (+24/-0) landscape/sysinfo/tests/test_deployment.py (+288/-0) landscape/sysinfo/tests/test_disk.py (+246/-0) landscape/sysinfo/tests/test_landscapelink.py (+22/-0) landscape/sysinfo/tests/test_load.py (+26/-0) landscape/sysinfo/tests/test_loggedinusers.py (+47/-0) landscape/sysinfo/tests/test_memory.py (+53/-0) landscape/sysinfo/tests/test_network.py (+35/-0) landscape/sysinfo/tests/test_processes.py (+56/-0) landscape/sysinfo/tests/test_sysinfo.py (+402/-0) landscape/sysinfo/tests/test_temperature.py (+46/-0) landscape/sysvconfig.py (+50/-0) landscape/tests/clock.py (+256/-0) landscape/tests/helpers.py (+748/-0) landscape/tests/mocker.py (+2155/-0) landscape/tests/subunit.py (+373/-0) landscape/tests/test_accumulate.py (+159/-0) landscape/tests/test_amp.py (+135/-0) landscape/tests/test_configuration.py (+2041/-0) landscape/tests/test_deployment.py (+517/-0) landscape/tests/test_diff.py (+34/-0) landscape/tests/test_hal.py (+87/-0) landscape/tests/test_log.py (+79/-0) landscape/tests/test_patch.py (+173/-0) landscape/tests/test_plugin.py (+61/-0) landscape/tests/test_reactor.py (+403/-0) landscape/tests/test_schema.py (+253/-0) landscape/tests/test_service.py (+132/-0) landscape/tests/test_sysvconfig.py (+87/-0) landscape/tests/test_textmessage.py (+112/-0) landscape/tests/test_watchdog.py (+1517/-0) landscape/textmessage.py (+98/-0) landscape/ui/constants.py (+3/-0) landscape/ui/controller/app.py (+91/-0) landscape/ui/controller/configuration.py (+122/-0) landscape/ui/controller/tests/test_app.py (+137/-0) landscape/ui/controller/tests/test_configuration.py (+212/-0) landscape/ui/lib/polkit.py (+102/-0) landscape/ui/model/configuration/mechanism.py (+113/-0) landscape/ui/model/configuration/proxy.py (+110/-0) landscape/ui/model/configuration/state.py (+586/-0) landscape/ui/model/configuration/tests/test_mechanism.py (+210/-0) landscape/ui/model/configuration/tests/test_proxy.py (+193/-0) landscape/ui/model/configuration/tests/test_state.py (+645/-0) landscape/ui/model/configuration/tests/test_uisettings.py (+167/-0) landscape/ui/model/configuration/uisettings.py (+57/-0) landscape/ui/model/registration/mechanism.py (+177/-0) landscape/ui/model/registration/proxy.py (+139/-0) landscape/ui/model/registration/tests/test_mechanism.py (+107/-0) landscape/ui/model/registration/tests/test_proxy.py (+148/-0) landscape/ui/tests/helpers.py (+187/-0) landscape/ui/view/configuration.py (+356/-0) landscape/ui/view/tests/test_configuration.py (+605/-0) landscape/ui/view/ui/landscape-client-settings.glade (+490/-0) landscape/upgraders/__init__.py (+9/-0) landscape/upgraders/broker.py (+3/-0) landscape/upgraders/legacy.py (+180/-0) landscape/upgraders/monitor.py (+4/-0) landscape/upgraders/package.py (+3/-0) landscape/upgraders/tests/test_broker.py (+10/-0) landscape/upgraders/tests/test_legacy.py (+325/-0) landscape/upgraders/tests/test_monitor.py (+10/-0) landscape/upgraders/tests/test_package.py (+10/-0) landscape/user/changes.py (+139/-0) landscape/user/management.py (+208/-0) landscape/user/provider.py (+167/-0) landscape/user/tests/helpers.py (+183/-0) landscape/user/tests/test_changes.py (+299/-0) landscape/user/tests/test_management.py (+604/-0) landscape/user/tests/test_provider.py (+523/-0) landscape/watchdog.py (+683/-0) man/landscape-client.1 (+121/-0) man/landscape-client.txt (+61/-0) man/landscape-config.1 (+252/-0) man/landscape-config.txt (+138/-0) man/landscape-message.1 (+51/-0) man/landscape-message.txt (+32/-0) po/POTFILES.in (+8/-0) po/fr.po (+168/-0) po/landscape-client.pot (+170/-0) polkit-1/com.canonical.LandscapeClientSettings.policy.in (+21/-0) pqm-tests.sh (+57/-0) root-client.conf (+14/-0) scripts/landscape-broker (+8/-0) scripts/landscape-client (+18/-0) scripts/landscape-client-registration-mechanism (+15/-0) scripts/landscape-client-settings-mechanism (+17/-0) scripts/landscape-client-settings-ui (+35/-0) scripts/landscape-client-ui-install (+78/-0) scripts/landscape-config (+13/-0) scripts/landscape-dbus-proxy (+82/-0) scripts/landscape-is-cloud-managed (+12/-0) scripts/landscape-manager (+8/-0) scripts/landscape-message (+8/-0) scripts/landscape-monitor (+8/-0) scripts/landscape-package-changer (+10/-0) scripts/landscape-package-reporter (+10/-0) scripts/landscape-release-upgrader (+10/-0) scripts/landscape-sysinfo (+22/-0) setup.cfg (+9/-0) setup.py (+66/-0) smart-update/Makefile (+6/-0) smart-update/smart-update.c (+129/-0) Conflict adding file LICENSE. Moved existing file to LICENSE.moved. Conflict adding file Makefile. Moved existing file to Makefile.moved. Conflict adding file README. Moved existing file to README.moved. Conflict adding file applications. Moved existing file to applications.moved. Conflict adding file apt-update. Moved existing file to apt-update.moved. Conflict adding file dbus-1. Moved existing file to dbus-1.moved. Conflict adding file dbus. Moved existing file to dbus.moved. Conflict adding file debian. Moved existing file to debian.moved. Conflict adding file dev. Moved existing file to dev.moved. Conflict adding file glib-2.0. Moved existing file to glib-2.0.moved. Conflict adding file icons. Moved existing file to icons.moved. Conflict adding file landscape-client.conf. Moved existing file to landscape-client.conf.moved. Conflict adding file landscape. Moved existing file to landscape.moved. Conflict adding file man. Moved existing file to man.moved. Conflict adding file po. Moved existing file to po.moved. Conflict adding file polkit-1. Moved existing file to polkit-1.moved. Conflict adding file pqm-tests.sh. Moved existing file to pqm-tests.sh.moved. Conflict adding file root-client.conf. Moved existing file to root-client.conf.moved. Conflict adding file scripts. Moved existing file to scripts.moved. Conflict adding file setup.cfg. Moved existing file to setup.cfg.moved. Conflict adding file setup.py. Moved existing file to setup.py.moved. Conflict adding file smart-update. Moved existing file to smart-update.moved. |
||||
To merge this branch: | bzr merge lp:~vibhavp/landscape-client/landscape-client-typo.fix | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Landscape | Pending | ||
Review via email: mp+103011@code.launchpad.net |
Commit message
Description of the change
Fixes Typo
To post a comment you must log in.
Revision history for this message
Thomas Herve (therve) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'LICENSE' |
2 | --- LICENSE 1970-01-01 00:00:00 +0000 |
3 | +++ LICENSE 2012-04-22 14:14:27 +0000 |
4 | @@ -0,0 +1,340 @@ |
5 | + GNU GENERAL PUBLIC LICENSE |
6 | + Version 2, June 1991 |
7 | + |
8 | + Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
9 | + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
10 | + Everyone is permitted to copy and distribute verbatim copies |
11 | + of this license document, but changing it is not allowed. |
12 | + |
13 | + Preamble |
14 | + |
15 | + The licenses for most software are designed to take away your |
16 | +freedom to share and change it. By contrast, the GNU General Public |
17 | +License is intended to guarantee your freedom to share and change free |
18 | +software--to make sure the software is free for all its users. This |
19 | +General Public License applies to most of the Free Software |
20 | +Foundation's software and to any other program whose authors commit to |
21 | +using it. (Some other Free Software Foundation software is covered by |
22 | +the GNU Library General Public License instead.) You can apply it to |
23 | +your programs, too. |
24 | + |
25 | + When we speak of free software, we are referring to freedom, not |
26 | +price. Our General Public Licenses are designed to make sure that you |
27 | +have the freedom to distribute copies of free software (and charge for |
28 | +this service if you wish), that you receive source code or can get it |
29 | +if you want it, that you can change the software or use pieces of it |
30 | +in new free programs; and that you know you can do these things. |
31 | + |
32 | + To protect your rights, we need to make restrictions that forbid |
33 | +anyone to deny you these rights or to ask you to surrender the rights. |
34 | +These restrictions translate to certain responsibilities for you if you |
35 | +distribute copies of the software, or if you modify it. |
36 | + |
37 | + For example, if you distribute copies of such a program, whether |
38 | +gratis or for a fee, you must give the recipients all the rights that |
39 | +you have. You must make sure that they, too, receive or can get the |
40 | +source code. And you must show them these terms so they know their |
41 | +rights. |
42 | + |
43 | + We protect your rights with two steps: (1) copyright the software, and |
44 | +(2) offer you this license which gives you legal permission to copy, |
45 | +distribute and/or modify the software. |
46 | + |
47 | + Also, for each author's protection and ours, we want to make certain |
48 | +that everyone understands that there is no warranty for this free |
49 | +software. If the software is modified by someone else and passed on, we |
50 | +want its recipients to know that what they have is not the original, so |
51 | +that any problems introduced by others will not reflect on the original |
52 | +authors' reputations. |
53 | + |
54 | + Finally, any free program is threatened constantly by software |
55 | +patents. We wish to avoid the danger that redistributors of a free |
56 | +program will individually obtain patent licenses, in effect making the |
57 | +program proprietary. To prevent this, we have made it clear that any |
58 | +patent must be licensed for everyone's free use or not licensed at all. |
59 | + |
60 | + The precise terms and conditions for copying, distribution and |
61 | +modification follow. |
62 | + |
63 | |
64 | + GNU GENERAL PUBLIC LICENSE |
65 | + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
66 | + |
67 | + 0. This License applies to any program or other work which contains |
68 | +a notice placed by the copyright holder saying it may be distributed |
69 | +under the terms of this General Public License. The "Program", below, |
70 | +refers to any such program or work, and a "work based on the Program" |
71 | +means either the Program or any derivative work under copyright law: |
72 | +that is to say, a work containing the Program or a portion of it, |
73 | +either verbatim or with modifications and/or translated into another |
74 | +language. (Hereinafter, translation is included without limitation in |
75 | +the term "modification".) Each licensee is addressed as "you". |
76 | + |
77 | +Activities other than copying, distribution and modification are not |
78 | +covered by this License; they are outside its scope. The act of |
79 | +running the Program is not restricted, and the output from the Program |
80 | +is covered only if its contents constitute a work based on the |
81 | +Program (independent of having been made by running the Program). |
82 | +Whether that is true depends on what the Program does. |
83 | + |
84 | + 1. You may copy and distribute verbatim copies of the Program's |
85 | +source code as you receive it, in any medium, provided that you |
86 | +conspicuously and appropriately publish on each copy an appropriate |
87 | +copyright notice and disclaimer of warranty; keep intact all the |
88 | +notices that refer to this License and to the absence of any warranty; |
89 | +and give any other recipients of the Program a copy of this License |
90 | +along with the Program. |
91 | + |
92 | +You may charge a fee for the physical act of transferring a copy, and |
93 | +you may at your option offer warranty protection in exchange for a fee. |
94 | + |
95 | + 2. You may modify your copy or copies of the Program or any portion |
96 | +of it, thus forming a work based on the Program, and copy and |
97 | +distribute such modifications or work under the terms of Section 1 |
98 | +above, provided that you also meet all of these conditions: |
99 | + |
100 | + a) You must cause the modified files to carry prominent notices |
101 | + stating that you changed the files and the date of any change. |
102 | + |
103 | + b) You must cause any work that you distribute or publish, that in |
104 | + whole or in part contains or is derived from the Program or any |
105 | + part thereof, to be licensed as a whole at no charge to all third |
106 | + parties under the terms of this License. |
107 | + |
108 | + c) If the modified program normally reads commands interactively |
109 | + when run, you must cause it, when started running for such |
110 | + interactive use in the most ordinary way, to print or display an |
111 | + announcement including an appropriate copyright notice and a |
112 | + notice that there is no warranty (or else, saying that you provide |
113 | + a warranty) and that users may redistribute the program under |
114 | + these conditions, and telling the user how to view a copy of this |
115 | + License. (Exception: if the Program itself is interactive but |
116 | + does not normally print such an announcement, your work based on |
117 | + the Program is not required to print an announcement.) |
118 | + |
119 | |
120 | +These requirements apply to the modified work as a whole. If |
121 | +identifiable sections of that work are not derived from the Program, |
122 | +and can be reasonably considered independent and separate works in |
123 | +themselves, then this License, and its terms, do not apply to those |
124 | +sections when you distribute them as separate works. But when you |
125 | +distribute the same sections as part of a whole which is a work based |
126 | +on the Program, the distribution of the whole must be on the terms of |
127 | +this License, whose permissions for other licensees extend to the |
128 | +entire whole, and thus to each and every part regardless of who wrote it. |
129 | + |
130 | +Thus, it is not the intent of this section to claim rights or contest |
131 | +your rights to work written entirely by you; rather, the intent is to |
132 | +exercise the right to control the distribution of derivative or |
133 | +collective works based on the Program. |
134 | + |
135 | +In addition, mere aggregation of another work not based on the Program |
136 | +with the Program (or with a work based on the Program) on a volume of |
137 | +a storage or distribution medium does not bring the other work under |
138 | +the scope of this License. |
139 | + |
140 | + 3. You may copy and distribute the Program (or a work based on it, |
141 | +under Section 2) in object code or executable form under the terms of |
142 | +Sections 1 and 2 above provided that you also do one of the following: |
143 | + |
144 | + a) Accompany it with the complete corresponding machine-readable |
145 | + source code, which must be distributed under the terms of Sections |
146 | + 1 and 2 above on a medium customarily used for software interchange; or, |
147 | + |
148 | + b) Accompany it with a written offer, valid for at least three |
149 | + years, to give any third party, for a charge no more than your |
150 | + cost of physically performing source distribution, a complete |
151 | + machine-readable copy of the corresponding source code, to be |
152 | + distributed under the terms of Sections 1 and 2 above on a medium |
153 | + customarily used for software interchange; or, |
154 | + |
155 | + c) Accompany it with the information you received as to the offer |
156 | + to distribute corresponding source code. (This alternative is |
157 | + allowed only for noncommercial distribution and only if you |
158 | + received the program in object code or executable form with such |
159 | + an offer, in accord with Subsection b above.) |
160 | + |
161 | +The source code for a work means the preferred form of the work for |
162 | +making modifications to it. For an executable work, complete source |
163 | +code means all the source code for all modules it contains, plus any |
164 | +associated interface definition files, plus the scripts used to |
165 | +control compilation and installation of the executable. However, as a |
166 | +special exception, the source code distributed need not include |
167 | +anything that is normally distributed (in either source or binary |
168 | +form) with the major components (compiler, kernel, and so on) of the |
169 | +operating system on which the executable runs, unless that component |
170 | +itself accompanies the executable. |
171 | + |
172 | +If distribution of executable or object code is made by offering |
173 | +access to copy from a designated place, then offering equivalent |
174 | +access to copy the source code from the same place counts as |
175 | +distribution of the source code, even though third parties are not |
176 | +compelled to copy the source along with the object code. |
177 | + |
178 | |
179 | + 4. You may not copy, modify, sublicense, or distribute the Program |
180 | +except as expressly provided under this License. Any attempt |
181 | +otherwise to copy, modify, sublicense or distribute the Program is |
182 | +void, and will automatically terminate your rights under this License. |
183 | +However, parties who have received copies, or rights, from you under |
184 | +this License will not have their licenses terminated so long as such |
185 | +parties remain in full compliance. |
186 | + |
187 | + 5. You are not required to accept this License, since you have not |
188 | +signed it. However, nothing else grants you permission to modify or |
189 | +distribute the Program or its derivative works. These actions are |
190 | +prohibited by law if you do not accept this License. Therefore, by |
191 | +modifying or distributing the Program (or any work based on the |
192 | +Program), you indicate your acceptance of this License to do so, and |
193 | +all its terms and conditions for copying, distributing or modifying |
194 | +the Program or works based on it. |
195 | + |
196 | + 6. Each time you redistribute the Program (or any work based on the |
197 | +Program), the recipient automatically receives a license from the |
198 | +original licensor to copy, distribute or modify the Program subject to |
199 | +these terms and conditions. You may not impose any further |
200 | +restrictions on the recipients' exercise of the rights granted herein. |
201 | +You are not responsible for enforcing compliance by third parties to |
202 | +this License. |
203 | + |
204 | + 7. If, as a consequence of a court judgment or allegation of patent |
205 | +infringement or for any other reason (not limited to patent issues), |
206 | +conditions are imposed on you (whether by court order, agreement or |
207 | +otherwise) that contradict the conditions of this License, they do not |
208 | +excuse you from the conditions of this License. If you cannot |
209 | +distribute so as to satisfy simultaneously your obligations under this |
210 | +License and any other pertinent obligations, then as a consequence you |
211 | +may not distribute the Program at all. For example, if a patent |
212 | +license would not permit royalty-free redistribution of the Program by |
213 | +all those who receive copies directly or indirectly through you, then |
214 | +the only way you could satisfy both it and this License would be to |
215 | +refrain entirely from distribution of the Program. |
216 | + |
217 | +If any portion of this section is held invalid or unenforceable under |
218 | +any particular circumstance, the balance of the section is intended to |
219 | +apply and the section as a whole is intended to apply in other |
220 | +circumstances. |
221 | + |
222 | +It is not the purpose of this section to induce you to infringe any |
223 | +patents or other property right claims or to contest validity of any |
224 | +such claims; this section has the sole purpose of protecting the |
225 | +integrity of the free software distribution system, which is |
226 | +implemented by public license practices. Many people have made |
227 | +generous contributions to the wide range of software distributed |
228 | +through that system in reliance on consistent application of that |
229 | +system; it is up to the author/donor to decide if he or she is willing |
230 | +to distribute software through any other system and a licensee cannot |
231 | +impose that choice. |
232 | + |
233 | +This section is intended to make thoroughly clear what is believed to |
234 | +be a consequence of the rest of this License. |
235 | + |
236 | |
237 | + 8. If the distribution and/or use of the Program is restricted in |
238 | +certain countries either by patents or by copyrighted interfaces, the |
239 | +original copyright holder who places the Program under this License |
240 | +may add an explicit geographical distribution limitation excluding |
241 | +those countries, so that distribution is permitted only in or among |
242 | +countries not thus excluded. In such case, this License incorporates |
243 | +the limitation as if written in the body of this License. |
244 | + |
245 | + 9. The Free Software Foundation may publish revised and/or new versions |
246 | +of the General Public License from time to time. Such new versions will |
247 | +be similar in spirit to the present version, but may differ in detail to |
248 | +address new problems or concerns. |
249 | + |
250 | +Each version is given a distinguishing version number. If the Program |
251 | +specifies a version number of this License which applies to it and "any |
252 | +later version", you have the option of following the terms and conditions |
253 | +either of that version or of any later version published by the Free |
254 | +Software Foundation. If the Program does not specify a version number of |
255 | +this License, you may choose any version ever published by the Free Software |
256 | +Foundation. |
257 | + |
258 | + 10. If you wish to incorporate parts of the Program into other free |
259 | +programs whose distribution conditions are different, write to the author |
260 | +to ask for permission. For software which is copyrighted by the Free |
261 | +Software Foundation, write to the Free Software Foundation; we sometimes |
262 | +make exceptions for this. Our decision will be guided by the two goals |
263 | +of preserving the free status of all derivatives of our free software and |
264 | +of promoting the sharing and reuse of software generally. |
265 | + |
266 | + NO WARRANTY |
267 | + |
268 | + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
269 | +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
270 | +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
271 | +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
272 | +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
273 | +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
274 | +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
275 | +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
276 | +REPAIR OR CORRECTION. |
277 | + |
278 | + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
279 | +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
280 | +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
281 | +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
282 | +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
283 | +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
284 | +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
285 | +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
286 | +POSSIBILITY OF SUCH DAMAGES. |
287 | + |
288 | + END OF TERMS AND CONDITIONS |
289 | + |
290 | |
291 | + How to Apply These Terms to Your New Programs |
292 | + |
293 | + If you develop a new program, and you want it to be of the greatest |
294 | +possible use to the public, the best way to achieve this is to make it |
295 | +free software which everyone can redistribute and change under these terms. |
296 | + |
297 | + To do so, attach the following notices to the program. It is safest |
298 | +to attach them to the start of each source file to most effectively |
299 | +convey the exclusion of warranty; and each file should have at least |
300 | +the "copyright" line and a pointer to where the full notice is found. |
301 | + |
302 | + <one line to give the program's name and a brief idea of what it does.> |
303 | + Copyright (C) <year> <name of author> |
304 | + |
305 | + This program is free software; you can redistribute it and/or modify |
306 | + it under the terms of the GNU General Public License as published by |
307 | + the Free Software Foundation; either version 2 of the License, or |
308 | + (at your option) any later version. |
309 | + |
310 | + This program is distributed in the hope that it will be useful, |
311 | + but WITHOUT ANY WARRANTY; without even the implied warranty of |
312 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
313 | + GNU General Public License for more details. |
314 | + |
315 | + You should have received a copy of the GNU General Public License |
316 | + along with this program; if not, write to the Free Software |
317 | + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
318 | + |
319 | + |
320 | +Also add information on how to contact you by electronic and paper mail. |
321 | + |
322 | +If the program is interactive, make it output a short notice like this |
323 | +when it starts in an interactive mode: |
324 | + |
325 | + Gnomovision version 69, Copyright (C) year name of author |
326 | + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
327 | + This is free software, and you are welcome to redistribute it |
328 | + under certain conditions; type `show c' for details. |
329 | + |
330 | +The hypothetical commands `show w' and `show c' should show the appropriate |
331 | +parts of the General Public License. Of course, the commands you use may |
332 | +be called something other than `show w' and `show c'; they could even be |
333 | +mouse-clicks or menu items--whatever suits your program. |
334 | + |
335 | +You should also get your employer (if you work as a programmer) or your |
336 | +school, if any, to sign a "copyright disclaimer" for the program, if |
337 | +necessary. Here is a sample; alter the names: |
338 | + |
339 | + Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
340 | + `Gnomovision' (which makes passes at compilers) written by James Hacker. |
341 | + |
342 | + <signature of Ty Coon>, 1 April 1989 |
343 | + Ty Coon, President of Vice |
344 | + |
345 | +This General Public License does not permit incorporating your program into |
346 | +proprietary programs. If your program is a subroutine library, you may |
347 | +consider it more useful to permit linking proprietary applications with the |
348 | +library. If this is what you want to do, use the GNU Library General |
349 | +Public License instead of this License. |
350 | |
351 | === renamed file 'LICENSE' => 'LICENSE.moved' |
352 | === added file 'Makefile' |
353 | --- Makefile 1970-01-01 00:00:00 +0000 |
354 | +++ Makefile 2012-04-22 14:14:27 +0000 |
355 | @@ -0,0 +1,113 @@ |
356 | +PYDOCTOR ?= pydoctor |
357 | +TXT2MAN ?= txt2man |
358 | +PYTHON ?= python |
359 | +TRIAL_ARGS ?= |
360 | +TEST_COMMAND = trial $(TRIAL_ARGS) landscape |
361 | + |
362 | +all: build |
363 | + |
364 | +build: |
365 | + $(PYTHON) setup.py build_ext -i |
366 | + |
367 | +check: build |
368 | + @if [ -z "$$DBUS_SESSION_BUS_ADDRESS" ]; then \ |
369 | + OUTPUT=`dbus-daemon --print-address=1 --print-pid=1 --session --fork`; \ |
370 | + export DBUS_SESSION_BUS_ADDRESS=`echo $$OUTPUT | cut -f1 -d ' '`; \ |
371 | + DBUS_PID=`echo $$OUTPUT | cut -f2 -d ' '`; \ |
372 | + trap "kill $$DBUS_PID" EXIT; \ |
373 | + fi; \ |
374 | + if [ -z "$$DISPLAY" ]; then \ |
375 | + xvfb-run $(TEST_COMMAND); \ |
376 | + else \ |
377 | + $(TEST_COMMAND); \ |
378 | + fi |
379 | + |
380 | +lint: |
381 | + bzr ls-lint |
382 | + |
383 | +pyflakes: |
384 | + -pyflakes `find landscape -name \*py|grep -v twisted_amp\.py|grep -v configobj\.py|grep -v mocker\.py` |
385 | + |
386 | +checkcertificate: |
387 | + -echo | openssl s_client -connect landscape.canonical.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt |
388 | + |
389 | +clean: |
390 | + -find landscape -name \*.pyc -exec rm {} \; |
391 | + -rm tags |
392 | + -rm _trial_temp -rf |
393 | + -rm docs/api -rf; |
394 | + -rm man/\*.1 -rf |
395 | + -rm sdist -rf |
396 | + |
397 | +doc: docs/api/twisted/pickle |
398 | + mkdir -p docs/api |
399 | + ${PYDOCTOR} --make-html --html-output docs/api --add-package landscape --extra-system=docs/api/twisted/pickle:twisted/ |
400 | + |
401 | +docs/api/twisted/pickle: |
402 | + mkdir -p docs/api/twisted |
403 | + -${PYDOCTOR} --make-html --html-output docs/api/twisted --add-package /usr/share/pyshared/twisted -o docs/api/twisted/pickle |
404 | + |
405 | +manpages: |
406 | + ${TXT2MAN} -P Landscape -s 1 -t landscape-client < man/landscape-client.txt > man/landscape-client.1 |
407 | + ${TXT2MAN} -P Landscape -s 1 -t landscape-config < man/landscape-config.txt > man/landscape-config.1 |
408 | + ${TXT2MAN} -P Landscape -s 1 -t landscape-message < man/landscape-message.txt > man/landscape-message.1 |
409 | + |
410 | +package: manpages |
411 | + @fakeroot debian/rules binary |
412 | + @echo "\n\nYou remembered to update the changelog, right?\n\n" |
413 | + |
414 | +SSH_USERNAME=`whoami` |
415 | +SSH_HOST=people.ubuntu.com |
416 | +PACKAGE_DIR=/home/jkakar/public_html/landscape |
417 | +deploy: |
418 | +ifneq (${PACKAGE},) |
419 | + @echo "Copying ${PACKAGE} to $(SSH_HOST):$(PACKAGE_DIR)" |
420 | + @scp ${PACKAGE} $(SSH_USERNAME)@$(SSH_HOST):$(PACKAGE_DIR) |
421 | + @echo "\nScanning packages and recreating the Packages file." |
422 | + @ssh -l $(SSH_USERNAME) $(SSH_HOST) \ |
423 | + "cd $(PACKAGE_DIR) " \ |
424 | + "&& dpkg-scanpackages . /dev/null > Packages " \ |
425 | + "&& gzip -f Packages" |
426 | +else |
427 | + @echo "You need to specify PACKAGE, as in: make deploy PACKAGE=<name>" |
428 | +endif |
429 | + |
430 | +MESSAGE_DIR = `pwd`/runclient-messages |
431 | +LOG_FILE = `pwd`/runclient.log |
432 | + |
433 | +reinstall: |
434 | + -sudo dpkg -P landscape-client |
435 | + -sudo rm -rf /var/log/landscape /etc/landscape /var/lib/landscape /etc/default/landscape-client |
436 | + -sudo apt-get install landscape-client |
437 | + |
438 | +freshdata: |
439 | + -sudo rm -rf $(MESSAGE_DIR) |
440 | + -sudo mkdir $(MESSAGE_DIR) |
441 | + |
442 | +run: |
443 | + -sudo ./landscape-client \ |
444 | + -a onward -t "John's PC" \ |
445 | + -u http://localhost:8080/message-system \ |
446 | + -d $(MESSAGE_DIR) \ |
447 | + --urgent-exchange-interval=5 \ |
448 | + --log-level=debug \ |
449 | + --ping-url=http://localhost:8081/ping \ |
450 | + |
451 | +freshrun: freshdata run |
452 | + |
453 | +tags: |
454 | + -ctags --languages=python -R . |
455 | + |
456 | +etags: |
457 | + -etags --languages=python -R . |
458 | + |
459 | +UPSTREAM_VERSION=$(shell python -c "from landscape import UPSTREAM_VERSION; print UPSTREAM_VERSION") |
460 | +sdist: |
461 | + mkdir -p sdist |
462 | + bzr export sdist/landscape-client-$(UPSTREAM_VERSION) |
463 | + rm -rf sdist/landscape-client-$(UPSTREAM_VERSION)/debian |
464 | + cd sdist && tar cfz landscape-client-$(UPSTREAM_VERSION).tar.gz landscape-client-$(UPSTREAM_VERSION) |
465 | + cd sdist && md5sum landscape-client-$(UPSTREAM_VERSION).tar.gz > landscape-client-$(UPSTREAM_VERSION).tar.gz.md5 |
466 | + rm -rf sdist/landscape-client-$(UPSTREAM_VERSION) |
467 | + |
468 | +.PHONY: tags etags |
469 | |
470 | === renamed file 'Makefile' => 'Makefile.moved' |
471 | === added file 'README' |
472 | --- README 1970-01-01 00:00:00 +0000 |
473 | +++ README 2012-04-22 14:14:27 +0000 |
474 | @@ -0,0 +1,46 @@ |
475 | +== Non-root mode == |
476 | + |
477 | +The Landscape Client generally runs as a combination of the 'root' and |
478 | +'landscape' users. It is possible to disable the administrative features of |
479 | +Landscape and run only the monitoring parts of it without using the 'root' |
480 | +user at all. |
481 | + |
482 | +If you wish to use the Landscape Client in this way, it's recommended that you |
483 | +perform these steps immediately after installing the landscape-client package. |
484 | + |
485 | +Edit /etc/default/landscape-client and add the following lines: |
486 | + |
487 | + RUN=1 |
488 | + DAEMON_USER=landscape |
489 | + |
490 | +Edit /etc/landscape/client.conf and add the following line: |
491 | + |
492 | + monitor_only = true |
493 | + |
494 | +Now you can run 'sudo landscape-config' as usual to complete the configuration |
495 | +of your client and register with the Landscape service. |
496 | + |
497 | + |
498 | +== Developing == |
499 | + |
500 | +To run the full test suite, you must have a dbus session bus |
501 | +running. If you don't have one (for example, if you're running the |
502 | +tests in an ssh session), run the following command: |
503 | + |
504 | +export DBUS_SESSION_BUS_ADDRESS=`dbus-daemon --print-address=1 --session --fork` |
505 | + |
506 | +Then your tests should pass. |
507 | + |
508 | +When you want to test the landscape client manually without management |
509 | +features, you can simply run: |
510 | + |
511 | +$ ./scripts/landscape-client |
512 | + |
513 | +This defaults to the 'landscape-client.conf' configuration file. |
514 | + |
515 | +When you want to test management features manually, you'll need to run as root. |
516 | +There's a configuration file 'root-client.conf' which specifies use of the |
517 | +system bus. |
518 | + |
519 | +$ sudo ./scripts/landscape-client -c root-client.conf |
520 | + |
521 | |
522 | === renamed file 'README' => 'README.moved' |
523 | === added directory 'applications' |
524 | === renamed directory 'applications' => 'applications.moved' |
525 | === added file 'applications/landscape-client-settings.desktop.in' |
526 | --- applications/landscape-client-settings.desktop.in 1970-01-01 00:00:00 +0000 |
527 | +++ applications/landscape-client-settings.desktop.in 2012-04-22 14:14:27 +0000 |
528 | @@ -0,0 +1,17 @@ |
529 | +[Desktop Entry] |
530 | +_Name=Management Service |
531 | +_Comment=Management Service Preferences |
532 | +Exec=landscape-client-ui-install |
533 | +Icon=preferences-management-service |
534 | +Terminal=False |
535 | +Type=Application |
536 | +StartupNotify=true |
537 | +Categories=GNOME;GTK;Settings;X-GNOME-SystemSettings;X-GNOME-Settings-Panel; |
538 | +OnlyShowIn=GNOME;Unity; |
539 | +X-GNOME-Bugzilla-Bugzilla=GNOME |
540 | +X-GNOME-Bugzilla-Product=gnome-control-center |
541 | +X-GNOME-Bugzilla-Component=sample |
542 | +X-GNOME-Bugzilla-Version=1.0.0 |
543 | +X-GNOME-Settings-Panel=sample |
544 | +X-GNOME-Keywords=device;system;information;memory;processor;version;default;application;fallback;preferred; |
545 | +X-Ubuntu-Gettext-Domain=landscape-client |
546 | |
547 | === added directory 'apt-update' |
548 | === renamed directory 'apt-update' => 'apt-update.moved' |
549 | === added file 'apt-update/Makefile' |
550 | --- apt-update/Makefile 1970-01-01 00:00:00 +0000 |
551 | +++ apt-update/Makefile 2012-04-22 14:14:27 +0000 |
552 | @@ -0,0 +1,7 @@ |
553 | +NAME = apt-update |
554 | + |
555 | +$(NAME): $(NAME).c |
556 | + $(CC) $(CFLAGS) -Wall $< -o $@ |
557 | + |
558 | +clean: |
559 | + rm -f $(NAME) |
560 | |
561 | === added file 'apt-update/apt-update.c' |
562 | --- apt-update/apt-update.c 1970-01-01 00:00:00 +0000 |
563 | +++ apt-update/apt-update.c 2012-04-22 14:14:27 +0000 |
564 | @@ -0,0 +1,81 @@ |
565 | +/* |
566 | + |
567 | + Copyright (c) 2011 Canonical, Ltd. |
568 | + |
569 | +*/ |
570 | + |
571 | +#define _GNU_SOURCE |
572 | +#include <sys/resource.h> |
573 | +#include <sys/types.h> |
574 | +#include <sys/stat.h> |
575 | +#include <grp.h> |
576 | +#include <unistd.h> |
577 | +#include <stdlib.h> |
578 | +#include <string.h> |
579 | +#include <errno.h> |
580 | +#include <stdio.h> |
581 | +#include <pwd.h> |
582 | + |
583 | +int main(int argc, char *argv[], char *envp[]) |
584 | +{ |
585 | + char *apt_argv[] = {"/usr/bin/apt-get", "-q", "update", NULL}; |
586 | + char *apt_envp[] = {"PATH=/bin:/usr/bin", NULL, NULL}; |
587 | + |
588 | + // Set the HOME environment variable |
589 | + struct passwd *pwd = getpwuid(geteuid()); |
590 | + if (!pwd) { |
591 | + fprintf(stderr, "error: Unable to find passwd entry for uid %d (%s)\n", |
592 | + geteuid(), strerror(errno)); |
593 | + exit(1); |
594 | + } |
595 | + if (asprintf(&apt_envp[1], "HOME=%s", pwd->pw_dir) == -1) { |
596 | + perror("error: Unable to create HOME environment variable"); |
597 | + exit(1); |
598 | + } |
599 | + |
600 | + // Drop any supplementary group |
601 | + if (setgroups(0, NULL) == -1) { |
602 | + perror("error: Unable to set supplementary groups IDs"); |
603 | + exit(1); |
604 | + } |
605 | + |
606 | + // Set real/effective gid and uid |
607 | + if (setregid(pwd->pw_gid, pwd->pw_gid) == -1) { |
608 | + fprintf(stderr, "error: Unable to set real and effective gid (%s)\n", |
609 | + strerror(errno)); |
610 | + exit(1); |
611 | + } |
612 | + if (setreuid(pwd->pw_uid, pwd->pw_uid) == -1) { |
613 | + perror("error: Unable to set real and effective uid"); |
614 | + exit(1); |
615 | + } |
616 | + |
617 | + // Close all file descriptors except the standard ones |
618 | + struct rlimit rlp; |
619 | + if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) { |
620 | + perror("error: Unable to determine file descriptor limits"); |
621 | + exit(1); |
622 | + } |
623 | + int file_max; |
624 | + if (rlp.rlim_max == RLIM_INFINITY || rlp.rlim_max > 4096) |
625 | + file_max = 4096; |
626 | + else |
627 | + file_max = rlp.rlim_max; |
628 | + int file; |
629 | + for (file = 3; file < file_max; file++) { |
630 | + close(file); |
631 | + } |
632 | + |
633 | + // Set umask to 022 |
634 | + umask(S_IWGRP | S_IWOTH); |
635 | + |
636 | + if (chdir("/") == -1) { |
637 | + perror("error: Unable to change working directory"); |
638 | + exit(1); |
639 | + } |
640 | + |
641 | + // Run apt-get update |
642 | + execve(apt_argv[0], apt_argv, apt_envp); |
643 | + perror("error: Unable to execute apt-get"); |
644 | + return 1; |
645 | +} |
646 | |
647 | === added directory 'dbus' |
648 | === added directory 'dbus-1' |
649 | === renamed directory 'dbus-1' => 'dbus-1.moved' |
650 | === added file 'dbus-1/com.canonical.LandscapeClientRegistration.conf' |
651 | --- dbus-1/com.canonical.LandscapeClientRegistration.conf 1970-01-01 00:00:00 +0000 |
652 | +++ dbus-1/com.canonical.LandscapeClientRegistration.conf 2012-04-22 14:14:27 +0000 |
653 | @@ -0,0 +1,16 @@ |
654 | +<?xml version="1.0" encoding="UTF-8"?> |
655 | +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" |
656 | +"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> |
657 | +<busconfig> |
658 | + <type>system</type> |
659 | + <policy user="root"> |
660 | + <allow own="com.canonical.LandscapeClientRegistration"/> |
661 | + <allow send_destination="com.canonical.LandscapeClientRegistration"/> |
662 | + <allow send_interface="com.canonical.LandscapeClientRegistration"/> |
663 | + </policy> |
664 | + |
665 | + <policy context="default"> |
666 | + <allow send_destination="com.canonical.LandscapeClientRegistration"/> |
667 | + <allow send_interface="com.canonical.LandscapeClientRegistration"/> |
668 | + </policy> |
669 | +</busconfig> |
670 | |
671 | === added file 'dbus-1/com.canonical.LandscapeClientRegistration.service' |
672 | --- dbus-1/com.canonical.LandscapeClientRegistration.service 1970-01-01 00:00:00 +0000 |
673 | +++ dbus-1/com.canonical.LandscapeClientRegistration.service 2012-04-22 14:14:27 +0000 |
674 | @@ -0,0 +1,4 @@ |
675 | +[D-BUS Service] |
676 | +Name=com.canonical.LandscapeClientRegistration |
677 | +Exec=/usr/bin/landscape-client-registration-mechanism |
678 | +User=root |
679 | \ No newline at end of file |
680 | |
681 | === added file 'dbus-1/com.canonical.LandscapeClientSettings.conf' |
682 | --- dbus-1/com.canonical.LandscapeClientSettings.conf 1970-01-01 00:00:00 +0000 |
683 | +++ dbus-1/com.canonical.LandscapeClientSettings.conf 2012-04-22 14:14:27 +0000 |
684 | @@ -0,0 +1,16 @@ |
685 | +<?xml version="1.0" encoding="UTF-8"?> |
686 | +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" |
687 | +"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> |
688 | +<busconfig> |
689 | + <type>system</type> |
690 | + <policy user="root"> |
691 | + <allow own="com.canonical.LandscapeClientSettings"/> |
692 | + <allow send_destination="com.canonical.LandscapeClientSettings"/> |
693 | + <allow send_interface="com.canonical.LandscapeClientSettings"/> |
694 | + </policy> |
695 | + |
696 | + <policy context="default"> |
697 | + <allow send_destination="com.canonical.LandscapeClientSettings"/> |
698 | + <allow send_interface="com.canonical.LandscapeClientSettings"/> |
699 | + </policy> |
700 | +</busconfig> |
701 | |
702 | === added file 'dbus-1/com.canonical.LandscapeClientSettings.service' |
703 | --- dbus-1/com.canonical.LandscapeClientSettings.service 1970-01-01 00:00:00 +0000 |
704 | +++ dbus-1/com.canonical.LandscapeClientSettings.service 2012-04-22 14:14:27 +0000 |
705 | @@ -0,0 +1,4 @@ |
706 | +[D-BUS Service] |
707 | +Name=com.canonical.LandscapeClientSettings |
708 | +Exec=/usr/bin/landscape-client-settings-mechanism |
709 | +User=root |
710 | \ No newline at end of file |
711 | |
712 | === renamed directory 'dbus' => 'dbus.moved' |
713 | === added file 'dbus/landscape.conf' |
714 | --- dbus/landscape.conf 1970-01-01 00:00:00 +0000 |
715 | +++ dbus/landscape.conf 2012-04-22 14:14:27 +0000 |
716 | @@ -0,0 +1,62 @@ |
717 | +<!DOCTYPE busconfig PUBLIC |
718 | + "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" |
719 | + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> |
720 | +<busconfig> |
721 | + |
722 | + <policy user="landscape"> |
723 | + <allow own="com.canonical.landscape.Broker" /> |
724 | + <allow own="com.canonical.landscape.Monitor" /> |
725 | + |
726 | + <allow send_destination="com.canonical.landscape.Broker" /> |
727 | + <allow receive_sender="com.canonical.landscape.Broker" /> |
728 | + |
729 | + <allow send_destination="com.canonical.landscape.Monitor" /> |
730 | + <allow receive_sender="com.canonical.landscape.Monitor" /> |
731 | + |
732 | + <allow send_destination="com.canonical.landscape.Manager" /> |
733 | + <allow receive_sender="com.canonical.landscape.Manager" /> |
734 | + |
735 | + <allow send_interface="org.freedesktop.Hal.Manager" /> |
736 | + <allow send_interface="org.freedesktop.Hal.Device" /> |
737 | + |
738 | + </policy> |
739 | + |
740 | + <!-- this is a horrible hack --> |
741 | + <policy user="haldaemon"> |
742 | + |
743 | + <allow receive_sender="com.canonical.landscape.Manager" /> |
744 | + <allow receive_sender="com.canonical.landscape.Monitor" /> |
745 | + <allow receive_sender="com.canonical.landscape.Broker" /> |
746 | + |
747 | + </policy> |
748 | + |
749 | + <policy user="root"> |
750 | + <allow own="com.canonical.landscape.Manager" /> |
751 | + |
752 | + <allow send_destination="com.canonical.landscape.Broker" /> |
753 | + <allow receive_sender="com.canonical.landscape.Broker" /> |
754 | + |
755 | + <allow send_destination="com.canonical.landscape.Monitor" /> |
756 | + <allow receive_sender="com.canonical.landscape.Monitor" /> |
757 | + |
758 | + <allow send_destination="com.canonical.landscape.Manager" /> |
759 | + <allow receive_sender="com.canonical.landscape.Manager" /> |
760 | + </policy> |
761 | + |
762 | + <policy context="default"> |
763 | + <deny own="com.canonical.landscape.Broker" /> |
764 | + <deny own="com.canonical.landscape.Monitor" /> |
765 | + <deny own="com.canonical.landscape.Manager" /> |
766 | + |
767 | + <deny send_destination="com.canonical.landscape.Broker" /> |
768 | + <deny receive_sender="com.canonical.landscape.Broker" /> |
769 | + |
770 | + <deny send_destination="com.canonical.landscape.Monitor" /> |
771 | + <deny receive_sender="com.canonical.landscape.Monitor" /> |
772 | + |
773 | + <deny send_destination="com.canonical.landscape.Manager" /> |
774 | + <deny receive_sender="com.canonical.landscape.Manager" /> |
775 | + |
776 | + </policy> |
777 | + |
778 | +</busconfig> |
779 | |
780 | === added directory 'debian' |
781 | === renamed directory 'debian' => 'debian.moved' |
782 | === added file 'debian/README.source' |
783 | --- debian/README.source 1970-01-01 00:00:00 +0000 |
784 | +++ debian/README.source 2012-04-22 14:14:27 +0000 |
785 | @@ -0,0 +1,15 @@ |
786 | +When making a revision to this package, please update the *last* digit in the |
787 | +Debian version number. e.g. |
788 | + |
789 | + 1.0.29-0ubuntu0.9.04.0 |
790 | + |
791 | +should become |
792 | + |
793 | + 1.0.29-0ubuntu0.9.04.1 |
794 | + |
795 | +In addition, when you build a package for a new client version, it would be |
796 | +appreciated if you also updated the UPSTREAM_VERSION variable in |
797 | +landscape/__init__.py to include the entire new client version number. This |
798 | +helps us keep track of exact version of clients in use. There's no need to |
799 | +update the DEBIAN_REVISION variable, as it gets automatically set at build |
800 | +time. |
801 | |
802 | === added file 'debian/changelog' |
803 | --- debian/changelog 1970-01-01 00:00:00 +0000 |
804 | +++ debian/changelog 2012-04-22 14:14:27 +0000 |
805 | @@ -0,0 +1,1189 @@ |
806 | +landscape-client (12.04.3-0ubuntu1) precise; urgency=low |
807 | + |
808 | + * Warn on unicode entry into settings UI (LP: #956612). |
809 | + * Sanitise hostname field in settings UI (LP: #954507). |
810 | + * Make it clear that the Landscape service is commercial (LP: #965850) |
811 | + * Further internationalize the settings UI (LP: #962899) |
812 | + |
813 | + -- David Britton <dpb@canonical.com> Wed, 28 Mar 2012 10:59:58 -0600 |
814 | + |
815 | +landscape-client (12.04.2-0ubuntu1) precise; urgency=low |
816 | + |
817 | + * Depend on python-aptdaemon.gtk3widgets instead of python-aptdaemon and |
818 | + replace dependency on python-gobject by python-gi (LP: #961894) |
819 | + * Add i18n to the landscape-client-ui-install script. (LP: #961891) |
820 | + |
821 | + -- David Britton <dpb@canonical.com> Thu, 22 Mar 2012 10:10:39 -0600 |
822 | + |
823 | +landscape-client (12.04.1-0ubuntu1) precise; urgency=low |
824 | + |
825 | + * Fix default landscape hostname in glib schema. |
826 | + * dpkg test improvements to fix intermittent failures. |
827 | + * If ssl_public_key is supplied, use it also when fetching script |
828 | + attachments. This fixes the case of using script execution with |
829 | + attachments when the Landscape server is using a custom CA, |
830 | + most common in LDS deployments. (LP: #959846) |
831 | + * Make sure we have a PATH variable set before doing package |
832 | + activities, and also set it in the initscript for good measure. If |
833 | + the client was configured and restarted by the new UI configuration |
834 | + tool, PATH wasn't set, triggering an error in dpkg. (LP: #961190) |
835 | + * Make landscape-client-ui depend on landscape-client-ui-install, so |
836 | + that we get an entry in the system settings if just |
837 | + landscape-client-ui is installed. The actual entry comes from |
838 | + landscape-client-ui-install. |
839 | + * Optimization: when adding binaries, don't reload every repo, only the one |
840 | + containing the binaries. (LP: #954822) |
841 | + * Handle the case where the user clicks twice inadvertently on the |
842 | + Landscape icon in system settings and don't start a second copy of |
843 | + itself. (LP: #960211) |
844 | + |
845 | + -- Andreas Hasenack <andreas@canonical.com> Wed, 21 Mar 2012 16:15:49 -0300 |
846 | + |
847 | +landscape-client (12.04-0ubuntu1) precise; urgency=low |
848 | + |
849 | + * d/control: Dropping python-central and python-support since |
850 | + they are not used except in backports, and are not in main. |
851 | + |
852 | + -- Clint Byrum <clint@ubuntu.com> Mon, 19 Mar 2012 16:05:49 -0700 |
853 | + |
854 | +landscape-client (12.04-0ubuntu0.12.04.0) precise; urgency=low |
855 | + |
856 | + * Change package management features to use APT instead of Smart (LP: #856244, |
857 | + #861707, #859615, #861345, #863239, #863259, #865270, #865272, #865285, |
858 | + #865273, #871641, #865299, #873196, #873939, #876493, #881973, #882438, |
859 | + #866014, #881998, #884142, #884151, #884131, #887037, #886208, #887578, |
860 | + #887947, #889067, #889069, #889087, #889099, #865303, #889113, #890605, |
861 | + #890606, #890609, #897416, #891855, #898681, #898683, #897656, #898542, |
862 | + #862212, #903202, #914734, #914735, #914737, #916301, #915280, #914742, |
863 | + #918925, #918175, #919179, #921664, #921699, #922582, #922511, #921712, |
864 | + #928750, #932136, #928941, #937411, #937567, #925543, #947803, #952973, |
865 | + #948142, #953136, #953906, #956590). |
866 | + * Add a GTK interface to configure the client (LP: #911279, #911666, #912163, |
867 | + #911665, #916300, #931937, #931937, #943622, #945025, #911279, #944652, |
868 | + #948464, #948416, #949158, #911671, #950864, #949208, #949147, #953070, |
869 | + #953292, #953463, #953034, #949200, #953026, #954499, #954516, #954285, |
870 | + #953065, #954414, #954332, #954542, #955966, #955139, #956030, #956119). |
871 | + * Add the ability to auto discover the server location on local deployment |
872 | + (LP: #917422, #927620, #917422, #928585, #929087, #932325, #948564) |
873 | + * Allow the client to accept arbitrary environment variables from the |
874 | + server for script execution (LP: #954999). |
875 | + * Make landscape-config exit non-zero when registration fails and |
876 | + --ok-no-register is not passed (LP: #271759). |
877 | + * Check for the content of /sys/bus/xen/devices to report a machine as a Xen |
878 | + VM instead of just relying on the existence of /sys/bus/xen (LP: #921970). |
879 | + * Make sure cloud registration succeeds if there is no kernel specified in |
880 | + the meta-data service (LP: #920453). |
881 | + * Report private and public IP adresses from the metadata service at cloud |
882 | + registration time (LP: #918366). |
883 | + * Add support for reporting hardware information using lshw (LP: #899002, |
884 | + #943975, #955734). |
885 | + * Add support for the new attachment service in script execution |
886 | + (LP: #893040). |
887 | + * Adds a new message type, 'register-provisioned-machine', which is meant |
888 | + to register computers using an OTP (LP: #881405). |
889 | + * Add local cloning option for load testing (LP: #872830, #925924). |
890 | + * Add more variables to preseeding (LP: #863204, #867710). |
891 | + * Allow the configuration of the ping interval (LP: #397884). |
892 | + * Add fake package reporters for load testing purposes (LP: #821571, |
893 | + #821570). |
894 | + * Report a package reporter error to the server if no APT sources are |
895 | + configured, to trigger a package reporter alert (LP: #823769). |
896 | + |
897 | + -- Andreas Hasenack <andreas@canonical.com> Mon, 19 Mar 2012 09:33:34 -0300 |
898 | + |
899 | +landscape-client (11.07.1.1-0ubuntu2) precise; urgency=low |
900 | + |
901 | + * Remove build dependency on python-central | python-support for demotion. |
902 | + |
903 | + -- Matthias Klose <doko@ubuntu.com> Sat, 17 Dec 2011 17:25:00 +0100 |
904 | + |
905 | +landscape-client (11.07.1.1-0ubuntu1.11.10.0) oneiric; urgency=low |
906 | + |
907 | + * Included missing files (LP: #814223). |
908 | + |
909 | + -- Andreas Hasenack <andreas@canonical.com> Thu, 21 Jul 2011 15:40:46 -0300 |
910 | + |
911 | +landscape-client (11.07.1.1-0ubuntu0.11.10.0) oneiric; urgency=low |
912 | + |
913 | + * Try to load the old persist file if the current one doesn't exist or is |
914 | + empty (LP: #809210). |
915 | + * Fallback to gethostname to get something interesting out of get_fqdn. |
916 | + * Fix wrong ownership and permissions when the reporter is run as a result |
917 | + of applying a repository profile (LP: #804008). |
918 | + * Keep original sources.list ownership (LP: #804548). |
919 | + * Refactored tests (LP: #805746). |
920 | + * Preserve permissions of sources.list (LP: #804548). |
921 | + * Added a broker command line option (--record) that saves exchanges with the |
922 | + server to the filesystem |
923 | + * Detect if running in a vmware guest (LP: #795794). |
924 | + * Report VM type when run in the cloud (LP: #797069). |
925 | + * Report VM type in non-cloud registration (LP: #795752). |
926 | + * Report the package reporter result even in case of success, not just in |
927 | + case of failure (LP: #780406). |
928 | + * Report package reporter errors (LP: #732490). |
929 | + * Fix dependencies for hardy removing references to python 2.4 packages for |
930 | + pycurl and dbus (LP: #759764). |
931 | + * The landscape client now reports whether it is running on a virtual machine |
932 | + or not. |
933 | + * Add a plugin which manages APT sources.list and the associated GPG keys |
934 | + (LP: #758928). |
935 | + * Limit the number of items in a network message to 200, to prevent problems |
936 | + when communication is interrupted with the server and the client |
937 | + accumulates too many network items, thus overloading the server when it's |
938 | + available again (LP: #760486). |
939 | + * Updated version number in __init__.py so that the client reports the |
940 | + correct one in its user-agent string. |
941 | + |
942 | + -- Andreas Hasenack <andreas@canonical.com> Mon, 18 Jul 2011 15:16:18 -0300 |
943 | + |
944 | +landscape-client (11.02-0ubuntu0.11.04.1) natty; urgency=low |
945 | + |
946 | + * debian/control, debian/rules: Add quilt |
947 | + * debian/patches/fix-landscape-monitor.patch: Fix landscape |
948 | + monitoring with gir1.0-gudev-1.0 installed. (LP: #747498) |
949 | + |
950 | + -- Chuck Short <zulcss@ubuntu.com> Fri, 08 Apr 2011 09:46:24 -0400 |
951 | + |
952 | +landscape-client (11.02-0ubuntu0.11.04.0) natty; urgency=low |
953 | + |
954 | + * New upstream version (LP: #727324) |
955 | + |
956 | + - Exit gracefully instead of crashing when the filesystem is |
957 | + read-only (LP: #649997). |
958 | + |
959 | + - Drop hal requirement (LP: #708502). |
960 | + |
961 | + - Enable HTTP compression in Curl (LP: #297623). |
962 | + |
963 | + - Explicitly name log files that need to be rotated (LP: #634236). |
964 | + |
965 | + - Assorted test suite fixes |
966 | + |
967 | + -- Andreas Hasenack <andreas@canonical.com> Tue, 01 Mar 2011 15:38:11 -0300 |
968 | + |
969 | +landscape-client (11.01-0ubuntu0.11.04.0) natty; urgency=low |
970 | + |
971 | + * New upstream version (LP: #702928) |
972 | + |
973 | + - Use a better load check for the sysinfo wrapper, taking into account the |
974 | + number of cores (LP: #643565). |
975 | + |
976 | + - Add an option to bootstrap cloud instances using cloud-init |
977 | + (LP: #701972). |
978 | + |
979 | + - Fix packaging for Natty (LP: #688115). |
980 | + |
981 | + - Force deletion of all the persist data for the monitoring plugins at |
982 | + resynchronization, instead of relying each one of them to do |
983 | + (LP: #688161). |
984 | + |
985 | + - Don't send the mount-activity message to the server anymore |
986 | + (LP: #688514). |
987 | + |
988 | + - Workaround a new behavior in NetworkManager where getfqdn would report |
989 | + localhost instead of useful hostname (LP: #649142). |
990 | + |
991 | + -- Thomas Hervé <thomas.herve@canonical.com> Fri, 14 Jan 2011 10:11:04 -0600 |
992 | + |
993 | +landscape-client (1.5.5.1-0ubuntu0.10.10.0) maverick; urgency=low |
994 | + |
995 | + * The client network plugin would send erroneous data if a network |
996 | + interface was removed (and its kernel module removed as well) and |
997 | + then readded (LP: #641264). |
998 | + |
999 | + -- Andreas Hasenack <andreas@canonical.com> Mon, 20 Sep 2010 13:52:49 -0300 |
1000 | + |
1001 | +landscape-client (1.5.5-0ubuntu0.10.10.0) maverick; urgency=low |
1002 | + |
1003 | + * New upstream version (LP: #633468) |
1004 | + |
1005 | + - The --help command line option can now be used without being |
1006 | + root (LP: #613256). |
1007 | + |
1008 | + - The client Unix sockets and symlinks are now cleaned up at shutdown. |
1009 | + Without this cleaning, the client could refuse to start because of a PID |
1010 | + collision (LP: #607747). |
1011 | + |
1012 | + - The network traffic plugin didn't use to take into account integer |
1013 | + overflows. This would cause the plugin to send negative values |
1014 | + sometimes (LP: #615371). |
1015 | + |
1016 | + - If a payload had many user activities in it, only the last one would be |
1017 | + carried out (LP: #617624). |
1018 | + |
1019 | + - The Eucalyptus plugin was not enabled by default, which means the Cloud |
1020 | + Topology feature of Landscape was not available (LP: #614493). |
1021 | + |
1022 | + -- Andreas Hasenack <andreas@canonical.com> Wed, 08 Sep 2010 15:34:09 -0400 |
1023 | + |
1024 | +landscape-client (1.5.4-0ubuntu0.10.10.0) maverick; urgency=low |
1025 | + |
1026 | + * New upstream version (LP: #610744): |
1027 | + |
1028 | + - The Eucalyptus management plugin reports the output of the |
1029 | + 'euca-describe-availability-zones verbose' command, which includes |
1030 | + information about the available instance types and the maximum |
1031 | + number of each instance type that the cloud can support (LP: #599338) |
1032 | + |
1033 | + - Check if the package directory exists before trying to check the |
1034 | + package changer lock in the dbus-proxy. This fixes a bug when upgrading |
1035 | + a dbus-landscape which never registered (LP: #603514). |
1036 | + |
1037 | + - Allow an LDS server to bootstrap new cloud instances with its own CA, |
1038 | + which is picked up by the client, written to a file on the instance, and |
1039 | + used in subsequent exchanges with the server (LP: #605079). |
1040 | + |
1041 | + - Skip loopback interface when reporting device info (LP: #608314) |
1042 | + |
1043 | + - Disable landscape-sysinfo when load is more than 1 (LP: #608278) |
1044 | + |
1045 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 28 Jul 2010 08:14:02 +0200 |
1046 | + |
1047 | +landscape-client (1.5.2.1-0ubuntu0.10.10.0) maverick; urgency=low |
1048 | + |
1049 | + * Include maverick in debian/rules substvars (LP: #596062) |
1050 | + * Filter duplicate network interfaces in get_active_interfaces (LP: #597000) |
1051 | + |
1052 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Mon, 28 Jun 2010 18:07:18 +0200 |
1053 | + |
1054 | +landscape-client (1.5.2-0ubuntu0.10.10.0) maverick; urgency=low |
1055 | + |
1056 | + * New upstream version (LP: #594594): |
1057 | + - A new includes information about active network devices and their |
1058 | + IP address in sysinfo output (LP: #272344). |
1059 | + - A new plugin collects information about network traffic (#LP :284662). |
1060 | + - Report information about which packages requested a reboot (LP: #538253). |
1061 | + - Fix breakage on Lucid AMIs having no ramdisk (LP: #574810). |
1062 | + - Migrate the inter-process communication system from DBus to Twisted AMP. |
1063 | + |
1064 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 16 Jun 2010 12:03:50 +0200 |
1065 | + |
1066 | +landscape-client (1.5.0-0ubuntu0.10.04.1) lucid; urgency=low |
1067 | + |
1068 | + * New upstream version |
1069 | + - Fix smart-update failing its very first run (LP: 562496) |
1070 | + - Depend on pythonX.Y-dbus and pythonX.Y-pycurl (LP: #563063) |
1071 | + |
1072 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 21 Apr 2010 12:31:28 +0200 |
1073 | + |
1074 | +landscape-client (1.5.0-0ubuntu0.10.04.0) lucid; urgency=low |
1075 | + |
1076 | + * New upstream version (LP: #557244) |
1077 | + - Fix package-changer running before smart-update has completed (LP: #542215) |
1078 | + - Report the version of Eucalyptus used to generate topology data (LP: #554007) |
1079 | + - Enable the Eucalyptus plugin by default, if supported (LP: #546531) |
1080 | + - Use a whitelist of allowed filesystem types to instead of a blacklist (LP: #351927) |
1081 | + - Report the update-manager logs to the server (LP: #503384) |
1082 | + - Turn off Curl's DNS caching for requests. (LP: #522688) |
1083 | + |
1084 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 07 Apr 2010 16:27:45 +0200 |
1085 | + |
1086 | +landscape-client (1.4.4-0ubuntu0.10.04.0) lucid; urgency=low |
1087 | + |
1088 | + * New upstream release (LP: #519200): |
1089 | + - Add a message for creating package locks (LP: #514334) |
1090 | + - Add support for auto-approved change-packages messages (LP: #517175) |
1091 | + - Add support for installing server-generated debian packages (LP: #509752) |
1092 | + - Add support for reporting Eucalyptus topology information (LP: #518501) |
1093 | + - Fix timeout while inserting large free-space message (LP: #218388) |
1094 | + - Fix wrong log path in motd (LP: #517454) |
1095 | + - Fix race condition in process excecution (LP: #517453) |
1096 | + |
1097 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Sat, 16 Jan 2010 14:11:32 +0100 |
1098 | + |
1099 | +landscape-client (1.4.0-0ubuntu0.9.10.0) lucid; urgency=low |
1100 | + |
1101 | + * New upstream release with several bug fixes: |
1102 | + - Fix landscape daemons fail to start when too many groups are |
1103 | + available (LP: #456124) |
1104 | + - Fix landscape programs wake up far too much. (LP: #340843) |
1105 | + - Fix Package manager fails with 'no such table: task' (LP #465846) |
1106 | + - Fix test suite leaving temporary files around (LP #476418) |
1107 | + |
1108 | + * Add support for Ubuntu release upgrades: |
1109 | + - Add helper function to fetch many files at once (LP: #450629) |
1110 | + - Handle release-upgrade messages in the packagemanager |
1111 | + plugin (LP: #455217) |
1112 | + - Add a release-upgrader task handler (LP: #462543) |
1113 | + - Support upgrade-tool environment variables (LP: #463321) |
1114 | + |
1115 | + * Add initial support for Smart package locking: |
1116 | + - Detect and report changes about Smart package locks (#488108) |
1117 | + |
1118 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Tue, 01 Dec 2009 09:16:26 +0100 |
1119 | + |
1120 | +landscape-client (1.3.2.4-0ubuntu0.9.10.0) karmic; urgency=low |
1121 | + |
1122 | + * New upstream release: |
1123 | + - Catch import errors in the landscape-sysinfo script to prevent |
1124 | + errors when landscape-sysinfo is run to update the motd during |
1125 | + upgrade (LP: #349996) |
1126 | + - Fix a long-standing bug in the client which causes resynchronisations |
1127 | + on the server (LP: #144475) |
1128 | + - When downloading hash-id stores, pass possible custom SSL certificates |
1129 | + to the fetch fuction (LP: #435887) |
1130 | + - Handle unicode username in custom graphs, and also report missing user |
1131 | + to the server properly (LP: #406388) |
1132 | + - Handle a SQlite bug when creating package store database, by making an |
1133 | + extra query to flush the table cache (LP: #416629) |
1134 | + |
1135 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Fri, 09 Oct 2009 18:21:24 +0200 |
1136 | + |
1137 | +landscape-client (1.3.2.3-0ubuntu0.9.10.0) karmic; urgency=low |
1138 | + |
1139 | + * New upstream release: |
1140 | + - Don't clear the hash_id_requests table upon resynchronize (LP #417122) |
1141 | + |
1142 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 26 Aug 2009 15:16:59 +0200 |
1143 | + |
1144 | +landscape-client (1.3.2.2-0ubuntu0.9.10.3) karmic; urgency=low |
1145 | + |
1146 | + * Drop unsed dependency on libcurl3 and explicitly depend on |
1147 | + libcurl3-gnutls (>= 7.15.1-1ubuntu3) on dapper (LP: #406885) |
1148 | + * Add missing debian/landscape-common.config (LP: #410378) |
1149 | + |
1150 | + -- Free Ekanayaka <free.ekanayaka@canonical.com> Thu, 30 Jul 2009 15:16:07 +0200 |
1151 | + |
1152 | +landscape-client (1.3.2.2-0ubuntu0.9.10.2) karmic; urgency=low |
1153 | + |
1154 | + * debian/control: dropping python-pysqlite2 dependency, since this |
1155 | + package is in universe, and python now has built-in sqlite support, |
1156 | + LP: #406641 |
1157 | + |
1158 | + -- Dustin Kirkland <kirkland@ubuntu.com> Wed, 29 Jul 2009 17:33:47 -0500 |
1159 | + |
1160 | +landscape-client (1.3.2.2-0ubuntu0.9.10.1) karmic; urgency=low |
1161 | + |
1162 | + [ Free Ekanayaka ] |
1163 | + * New upstream release: |
1164 | + - Include the README file in landscape-client (LP: #396260) |
1165 | + - Fix client capturing stderr from run_command when constructing |
1166 | + hash-id-databases url (LP: #397480) |
1167 | + - Use substvars to conditionally depend on update-motd or |
1168 | + libpam-modules (LP: #393454) |
1169 | + - Fix reporting wrong version to the server (LP: #391225) |
1170 | + - The init script does not wait for the network to be available |
1171 | + before checking for EC2 user data (LP: #383336) |
1172 | + - When the broker is restarted by the watchdog, the state of the client |
1173 | + is inconsistent (LP: #380633) |
1174 | + - Package stays unknown forever in the client with hash-id-databases |
1175 | + support (LP: #381356) |
1176 | + - Standard error not captured when calling smart-update (LP: #387441) |
1177 | + - Changer calls reporter without switching groups, just user (LP: #388092) |
1178 | + - Run smart update in the package-reporter instead of having a cronjob (LP: #362355) |
1179 | + - Package changer does not inherit proxy settings (LP: #381241) |
1180 | + - The ./test script doesn't work in landscape-client (LP: #381613) |
1181 | + - The source package should build on all supported releases (LP: #385098) |
1182 | + - Strip smart update's output (LP: #387331) |
1183 | + - The fetch() timeout isn't based on activity (#389224) |
1184 | + - Client can use a UUID of "None" when fetching the hash-id-database (LP: #381291) |
1185 | + - Registration should use the fqdn rather than just the hostname (LP: #385730) |
1186 | + |
1187 | + -- Mathias Gug <mathiaz@ubuntu.com> Wed, 22 Jul 2009 14:54:50 -0400 |
1188 | + |
1189 | +landscape-client (1.0.29.1-0ubuntu0.9.04.1) karmic; urgency=low |
1190 | + |
1191 | + * debian/control: depend on libpam-modules, rather than update-motd |
1192 | + |
1193 | + -- Dustin Kirkland <kirkland@ubuntu.com> Thu, 16 Jul 2009 11:36:27 -0500 |
1194 | + |
1195 | +landscape-client (1.0.29.1-0ubuntu0.9.04.0) jaunty; urgency=low |
1196 | + |
1197 | + * Apply a fix for segfault bug involving curl timeouts. (LP: #360510) |
1198 | + |
1199 | + -- Christopher Armstrong <radix@ubuntu.com> Mon, 13 Apr 2009 14:33:31 -0400 |
1200 | + |
1201 | +landscape-client (1.0.29-0ubuntu0.9.04.0) jaunty; urgency=low |
1202 | + |
1203 | + * New upstream bugfix release (LP: #358744) |
1204 | + - Add a timeout to HTTP operations to avoid hanging (LP: #349737) |
1205 | + - Clean up environment variables on startup to avoid propagating |
1206 | + variables that will corrupt package installation (LP: #348681) |
1207 | + - Clean up FDs on startup for the same reason (LP: #352458) |
1208 | + - Catch and handle certain errors from smart (such as invalid package |
1209 | + data) to avoid "stuck" Landscape activities (LP: #268745) |
1210 | + - Don't print warnings meant for developers to the console (LP: #336669) |
1211 | + |
1212 | + -- Christopher Armstrong <radix@ubuntu.com> Thu, 09 Apr 2009 17:09:50 -0400 |
1213 | + |
1214 | +landscape-client (1.0.28-0ubuntu1.9.04.0) jaunty; urgency=low |
1215 | + |
1216 | + * Fix minor packaging issues in last release (LP: #343954) |
1217 | + - Version number in landscape.VERSION is now correct |
1218 | + - Fixed package version number to maintain convention |
1219 | + * The following changes are in the 1.0.28 release: |
1220 | + - Invalidate package cache when server UUID changes (LP: #339948) |
1221 | + - Improve the "cloud mode" introduced in 1.0.26 to send more |
1222 | + disambiguation data (LP: #343942) and allow the EC2 user data to specify |
1223 | + the exchange and ping URLs (LP: #343947) |
1224 | + - Allow importing of initial configurations (along with public SSL |
1225 | + certificates) when running landscape-config (LP: #341705) |
1226 | + - Support a non-root mode which allows running the client without the |
1227 | + management functionality (LP: #82159) |
1228 | + - Automatic cloud registration when there's no user-data to specify an OTP |
1229 | + now works (LP: #344323) |
1230 | + |
1231 | + -- Christopher Armstrong <radix@ubuntu.com> Thu, 19 Mar 2009 09:52:03 -0400 |
1232 | + |
1233 | +landscape-client (1.0.28-0ubuntu1) jaunty; urgency=low |
1234 | + |
1235 | + * New upstream release. (LP: #343954) |
1236 | + |
1237 | + -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 18 Mar 2009 20:42:05 +0100 |
1238 | + |
1239 | +landscape-client (1.0.26.1-0ubuntu0.9.04) jaunty; urgency=low |
1240 | + |
1241 | + * Build for python2.6, include the symlinks in the package. |
1242 | + |
1243 | + -- Matthias Klose <doko@ubuntu.com> Wed, 25 Feb 2009 12:03:23 +0000 |
1244 | + |
1245 | +landscape-client (1.0.26-0ubuntu0.9.04) jaunty; urgency=low |
1246 | + |
1247 | + * New upstream release (LP: #328151) |
1248 | + |
1249 | + -- Christopher Armstrong <radix@ubuntu.com> Wed, 11 Feb 2009 17:00:54 +0000 |
1250 | + |
1251 | +landscape-client (1.0.25-0ubuntu0.9.04) jaunty; urgency=low |
1252 | + |
1253 | + * New upstream release supporting custom graphs (LP: #306360) |
1254 | + - Multiple custom graphs can be used at the same time (LP: #307314) |
1255 | + - PATH is now set for scripts in script execution (LP: #257018) |
1256 | + * debian/landscape-common.postinst: Only chown parts of /var/lib/landscape |
1257 | + because we now store files in it that should maintain their ownership |
1258 | + (LP: #307321). |
1259 | + * debian/landscape-client.postinst: Work around chfn/system user problem |
1260 | + by not specifying a --gecos (LP: #238755) |
1261 | + * debian/landscape-client.logrotate: logrotate no longer reports spurious |
1262 | + errors when the client isn't running (LP: #271767) |
1263 | + |
1264 | + -- Christopher Armstrong <radix@ubuntu.com> Thu, 11 Dec 2008 17:11:08 -0800 |
1265 | + |
1266 | +landscape-client (1.0.23-0ubuntu0.8.10.1) intrepid; urgency=low |
1267 | + |
1268 | + * debian/control: Update Replaces to < 1.0.23-0ubuntu0.8.10 to correctly |
1269 | + replace newer unsplit versions of the landscape package (LP: #285030). |
1270 | + |
1271 | + -- Christopher Armstrong <radix@ubuntu.com> Fri, 17 Oct 2008 12:42:23 -0400 |
1272 | + |
1273 | +landscape-client (1.0.23-0ubuntu0.8.10) intrepid; urgency=low |
1274 | + |
1275 | + * New upstream release. (LP: #277658): |
1276 | + Changes since 1.0.21.1: |
1277 | + - Don't print duplicate warnings when / is nearing capacity in sysinfo |
1278 | + (LP: #260230). |
1279 | + - Slight change to link text in landscape-sysinfo. |
1280 | + - Don't crash badly when programs are run as the incorrect user |
1281 | + (LP: #268879). |
1282 | + * debian/changelog: New debian-version scheme including Ubuntu version. The |
1283 | + same upstream version is available for all supported releases. |
1284 | + (LP: #277682). |
1285 | + * debian/landscape-client.postrm: Delete log and data files upon purge |
1286 | + (LP: #121182). |
1287 | + * debian/landscape-common.postrm: Delete the sysinfo logs upon purge. |
1288 | + |
1289 | + -- Christopher Armstrong <radix@ubuntu.com> Thu, 09 Oct 2008 11:40:51 -0400 |
1290 | + |
1291 | +landscape-client (1.0.21.1-0ubuntu2) intrepid; urgency=low |
1292 | + |
1293 | + * debian/control: fix bzr url |
1294 | + * debian/landscape-sysinfo.wrapper: print a timestamp before the sysinfo |
1295 | + data to ensure appropriate context (LP: #270862) |
1296 | + |
1297 | + -- Dustin Kirkland <kirkland@ubuntu.com> Tue, 30 Sep 2008 17:13:18 -0500 |
1298 | + |
1299 | +landscape-client (1.0.21.1-0ubuntu1) intrepid; urgency=low |
1300 | + |
1301 | + * New upstream version: |
1302 | + * Add ok-no-register option to landscape-config script to not fail if |
1303 | + dbus isn't started or landscape-client isn't running. |
1304 | + * lower timeout related to package management in landscape. |
1305 | + * debian/control: Depend on cron. |
1306 | + * debian/landscape-client.postinst: use ok-no-register option so that the |
1307 | + postinst script doesn't fail when run from the installer. (LP: #274573). |
1308 | + |
1309 | + -- Mathias Gug <mathiaz@ubuntu.com> Thu, 25 Sep 2008 17:54:00 -0400 |
1310 | + |
1311 | +landscape-client (1.0.21-0ubuntu2) intrepid; urgency=low |
1312 | + |
1313 | + * debian/rules: Install an hourly cron job to update smart package data. |
1314 | + Thanks to Christopher Armstrong (LP: #268765). |
1315 | + * debian/control: |
1316 | + - Move ${misc:Depends} to Depends. |
1317 | + - Add VCS-* headers. |
1318 | + * debian/landscape-client.postrm: |
1319 | + - remove /etc/default/landscape-client when the package is purged. |
1320 | + |
1321 | + -- Mathias Gug <mathiaz@ubuntu.com> Tue, 23 Sep 2008 18:19:26 -0400 |
1322 | + |
1323 | +landscape-client (1.0.21-0ubuntu1) intrepid; urgency=low |
1324 | + |
1325 | + [ Christopher Armstrong ] |
1326 | + * New upstream release (LP: #271886): |
1327 | + - Bug fix release: |
1328 | + - Avoid the PotentialZombieWarning on landscape-client startup. |
1329 | + (LP: #257346) |
1330 | + - When run as root, read sysinfo configuration from /etc and and write |
1331 | + logs to /var/log instead of /root. (LP: #268560) |
1332 | + - Avoid ZeroDivisionErrors when /home is an autofs. (LP: #269634) |
1333 | + - Don't corrupt a pid file when trying to start the client when it's |
1334 | + already running. (LP: #269634) |
1335 | + - Remove the pid file when shutting down the client. (LP: #257081) |
1336 | + |
1337 | + [ Mathias Gug ] |
1338 | + * debian/landscape-client.init: specify the pid file and use --startas |
1339 | + instead of --exec when starting landscape-client so that the init script |
1340 | + doesn't fail if landscape-client is already running. |
1341 | + |
1342 | + -- Mathias Gug <mathiaz@ubuntu.com> Fri, 19 Sep 2008 17:28:08 -0400 |
1343 | + |
1344 | +landscape-client (1.0.18-0ubuntu4) intrepid; urgency=low |
1345 | + |
1346 | + [ Christopher Armstrong ] |
1347 | + * debian/landscape-common.postinst: Don't blow up when the landscape-sysinfo |
1348 | + symlinks already exist (LP: #270131) |
1349 | + |
1350 | + [ Mathias Gug ] |
1351 | + * debian/landscape-common.postinst, debian/landscape-common.prerm: don't |
1352 | + call update-motd init script as it's no longer available in the |
1353 | + update-motd package. Call directly /usr/sbin/update-motd instead. |
1354 | + (LP: #271854) |
1355 | + |
1356 | + -- Mathias Gug <mathiaz@ubuntu.com> Thu, 18 Sep 2008 16:47:08 -0400 |
1357 | + |
1358 | +landscape-client (1.0.18-0ubuntu3) intrepid; urgency=low |
1359 | + |
1360 | + * debian/control: Add Replaces for landscape-common since |
1361 | + landscape-sysinfo has been moved from -client to -common. |
1362 | + |
1363 | + -- Mathias Gug <mathiaz@ubuntu.com> Tue, 16 Sep 2008 17:16:50 -0400 |
1364 | + |
1365 | +landscape-client (1.0.18-0ubuntu2) intrepid; urgency=low |
1366 | + |
1367 | + [ Mathias Gug ] |
1368 | + * Split the package into two packages: |
1369 | + - landscape-common: has the python libraries and the landscape-sysinfo |
1370 | + command. A landscape account is not required to use this package. |
1371 | + - landscape-client: has all the binaries required to run the |
1372 | + landscape-client. Requires a landscape account. |
1373 | + - debian/control: |
1374 | + + move some dependencies to landscape-client so that |
1375 | + landscape-common doesn't install unecessary packages in the |
1376 | + default -server install. |
1377 | + + move python-gobject to a Pre-Depends so that landscape-config can |
1378 | + register the system during the postinst (LP: #268838). |
1379 | + * debian/control: |
1380 | + - depend on python-smartpm instead of smartpm-core. |
1381 | + * debian/landscape-client.postrm: delete /etc/landscape/client.conf when |
1382 | + the package is purged. |
1383 | + * debian/landscape-client.postinst: remove sysinfo_in_motd debconf question |
1384 | + as it wasn't used. |
1385 | + |
1386 | + [ Christopher Armstrong ] |
1387 | + * Fixes for (LP: #268352). |
1388 | + - scripts/landscape-sysinfo.wrapper: New script to run landscape-sysinfo |
1389 | + with leading whitespace. |
1390 | + - debian/rules: Install wrapper into /usr/share/landscape. |
1391 | + - debian/landscape-client.postinst: Link wrapper into place. |
1392 | + |
1393 | + -- Mathias Gug <mathiaz@ubuntu.com> Mon, 15 Sep 2008 17:21:53 -0400 |
1394 | + |
1395 | +landscape-client (1.0.18-0ubuntu1) intrepid; urgency=low |
1396 | + |
1397 | + * New upstream release |
1398 | + |
1399 | + -- Rick Clark <rick.clark@ubuntu.com> Mon, 08 Sep 2008 16:35:57 -0500 |
1400 | + |
1401 | +landscape-client (1.0.17-0ubuntu1) intrepid; urgency=low |
1402 | + |
1403 | + [ Dustin Kirkland and Rick Clark ] |
1404 | + * debian/compat: updated to 6. |
1405 | + * debian/config: initial debconf config. |
1406 | + * debian/control: reformatted depends and changed smartpm-core version; |
1407 | + changed Standards-Version to 3.8.0; added adduser to depends as needed by |
1408 | + postinst and postrm; updates smartpm-core dep to >1.0; moved most build |
1409 | + deps to Build-Depends-Indep; add po-debconf build dependency; added |
1410 | + debconf hooks for installing landscape-sysinfo as an update-motd or |
1411 | + profile.d script. |
1412 | + * debian/copyright: updated copyright date; removed incorrect symlink to |
1413 | + GPL-3; added Dustin and Rick to the packaging credits. |
1414 | + * debian/landscape-client.init: removed S from stop; rewritten to be more |
1415 | + lsb/Debian compliant; added status action; fixed whitespacing |
1416 | + inconsistency; use $NAME whenever possible; comment why we're not using |
1417 | + status_of_proc(). |
1418 | + * debian/landscape-client.lintian-overrides: added with two overrides |
1419 | + * debian/landscape-client.overrides: removed. |
1420 | + * debian/landscape-client.prerm: initial creation, remove landscape-sysinfo |
1421 | + update-motd or profile.d script, if any exists. |
1422 | + * debian/landscape-client.postinst: fixed deprecated chmod call; changed |
1423 | + home dir of landscape user; removed uneeded update-rc.d; added code to |
1424 | + handle debconf; created a function for retrieving values from ini config; |
1425 | + /usr/share/debconf/comfmodule to top of postinst; add db_stop back in. |
1426 | + * debian/landscape-client.postrm: added debhelper tag. |
1427 | + * debian/rules: added po debconf bits for translation; depend on update-motd. |
1428 | + * debian/pycompat: initial creation. |
1429 | + * debian/po/POTFILES.in, debian/po/templates.pot: initial creation. |
1430 | + * man/txt2man, man/*.txt: removed; manpages should *really* be in native |
1431 | + format. |
1432 | + * man/landscape-client.1, man/landscape-config.1, man/landscape-message.1: |
1433 | + manpages in roff format, initially created by txt2man, some minor tweaks |
1434 | + to the title and such. |
1435 | + |
1436 | + [ Gustavo Niemeyer ] |
1437 | + * New Upstream release |
1438 | + * Fix copyright dates in debian/copyright |
1439 | + * fix the chown call to use a colon |
1440 | + * Fixed missing $PACKAGES variable in postinst |
1441 | + * Implemented support for configuration the computer title via debconf |
1442 | + |
1443 | + [ Kees Cook ] |
1444 | + * removed unused debian/autoppa-switch. |
1445 | + * fixed debian/landscape-client.init to run log_end_msg in the right place. |
1446 | + * debian/landscape-client.postrm: rewrote to allow debhelper to do its |
1447 | + job, fixed deluser call. |
1448 | + * debian/landscape-client.postinst: rewrote to allow debhelper to do its |
1449 | + job, fixed use of adduser. |
1450 | + * debian/rules: use "install" instead of "cp", dropped lintian overrides. |
1451 | + * debian/changelog: drop redundant changelog entries. |
1452 | + |
1453 | + [ Rick Clark ] |
1454 | + * removed .override file |
1455 | + * removed .autoppa files |
1456 | + |
1457 | + -- Dustin Kirkland <kirkland@ubuntu.com> Thu, 04 Sep 2008 13:28:14 -0500 |
1458 | + |
1459 | +landscape-client (1.0.16-intrepid1-landscape1) intrepid; urgency=low |
1460 | + |
1461 | + * landscape-config can now be run in a non-interactive mode |
1462 | + |
1463 | + -- Andreas Hasenack <andreas@canonical.com> Fri, 8 Aug 2008 14:34:43 +0000 |
1464 | + |
1465 | +landscape-client (1.0.15-intrepid1-landscape1) intrepid; urgency=low |
1466 | + |
1467 | + * introduce a basic landscape-sysinfo tool |
1468 | + * properly report a script execution error if its exit status is not |
1469 | + zero |
1470 | + |
1471 | + -- Andreas Hasenack <andreas@canonical.com> Thu, 7 Aug 2008 18:33:41 +0000 |
1472 | + |
1473 | +landscape-client (1.0.14-intrepid1-landscape1) intrepid; urgency=low |
1474 | + |
1475 | + * fixed some dbus errors in some of the supported distributions |
1476 | + * added restart/shutdown plugin |
1477 | + * scripts can now have accented characters in them |
1478 | + |
1479 | + -- Andreas Hasenack <andreas@canonical.com> Thu, 24 Jul 2008 13:06:34 +0000 |
1480 | + |
1481 | +landscape-client (1.0.13-hardy1-landscape1) hardy; urgency=low |
1482 | + |
1483 | + * the timestamp in the error message from processkiller.py is now |
1484 | + formatted properly |
1485 | + * the process list sent to the server was only being updated for new |
1486 | + processes, and not when existing processes changed |
1487 | + * in script execution, a timeout error is now reported with a proper |
1488 | + error message instead of just a generic failure in the script |
1489 | + |
1490 | + -- Andreas Hasenack <andreas@canonical.com> Thu, 10 Jul 2008 14:24:15 +0000 |
1491 | + |
1492 | +landscape-client (1.0.12-hardy1-landscape1) hardy; urgency=low |
1493 | + |
1494 | + * the sleep average value of a process is no longer provided by recent |
1495 | + kernels. The client now computes and sends the CPU usage instead. |
1496 | + * initial directory for script execution is now the target user's home |
1497 | + directory and, if that is unavailable, /. Previously it was /root. |
1498 | + * new user creation was ignoring some extra fields such as Location and |
1499 | + phone numbers |
1500 | + * the machine uptime was incorrectly reported after a logrotate run and if |
1501 | + there was no reboot afterwards. This affected the process listing page in |
1502 | + the web interface, where processes would show up as having been started |
1503 | + around 1970. |
1504 | + |
1505 | + -- Andreas Hasenack <andreas@canonical.com> Thu, 26 Jun 2008 16:17:59 +0000 |
1506 | + |
1507 | +landscape-client (1.0.11-hardy1-landscape1) hardy; urgency=low |
1508 | + |
1509 | + * fixed a regression where an important fix was missing from the |
1510 | + new staging branch |
1511 | + |
1512 | + -- Andreas Hasenack <andreas@canonical.com> Fri, 13 Jun 2008 14:45:08 +0000 |
1513 | + |
1514 | +landscape-client (1.0.10-hardy1-landscape1) hardy; urgency=low |
1515 | + |
1516 | + * Change the utilisation of the csv module to be compatible with |
1517 | + python 2.4 as used in Dapper. |
1518 | + |
1519 | + -- Andreas Hasenack <andreas@canonical.com> Thu, 12 Jun 2008 17:58:05 +0000 |
1520 | + |
1521 | +landscape-client (1.0.9-hardy1-landscape1) hardy; urgency=low |
1522 | + |
1523 | + * restrict users and groups list to local ones only, i.e., /etc/passwd |
1524 | + and /etc/group |
1525 | + * fixed some tests that were failing in locales other than english |
1526 | + |
1527 | + -- Andreas Hasenack <andreas@canonical.com> Wed, 11 Jun 2008 15:16:12 +0000 |
1528 | + |
1529 | +landscape-client (1.0.4-hardy1-landscape1) hardy; urgency=low |
1530 | + |
1531 | + * fixed permissions and ownership of some files and directories which could |
1532 | + prevent package data from being uploaded to the Landscape server |
1533 | + * fixed a problem where the root user password could not be changed |
1534 | + * the watchdog.log log file is now also rotated |
1535 | + |
1536 | + -- Andreas Hasenack <andreas@canonical.com> Wed, 16 Apr 2008 17:21:20 +0000 |
1537 | + |
1538 | +landscape-client (1.0-hardy1-landscape4) hardy; urgency=low |
1539 | + |
1540 | + * Memory consumption has is improved. The client's functionality is |
1541 | + now broken up into a number of sub-processes. Functionality that |
1542 | + would previously use or leak memory, such as package management, |
1543 | + run in independent processes that exit when they complete so the |
1544 | + OS can reclaim the memory. |
1545 | + * Security is improved with this design. Monitoring plugins run as |
1546 | + the unpriviledged landscape user while management functions run as |
1547 | + root. |
1548 | + * Secure inter-process communication occurs over DBUS. |
1549 | + |
1550 | + -- Michel Pelletier <pelletier.michel@gmail.com> Wed, 27 Feb 2008 22:57:21 +0000 |
1551 | + |
1552 | +landscape-client (0.17.0-hardy1-landscape1) hardy; urgency=low |
1553 | + |
1554 | + * The client now reports the primary group for users. I can also |
1555 | + modify it when requested by the server (#122212). |
1556 | + |
1557 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 21 Nov 2007 19:14:29 +0000 |
1558 | + |
1559 | +landscape-client (0.16.0-hardy1-landscape1) hardy; urgency=low |
1560 | + |
1561 | + * The client no longer schedules an urgent exchange if it detects |
1562 | + that the server has not processed any messages in its most recent |
1563 | + exchange (#138135). |
1564 | + * The total number of pending messages are sent to the server to |
1565 | + make it possible to generate backlog statistics (#162733). |
1566 | + |
1567 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 14 Nov 2007 23:09:58 +0000 |
1568 | + |
1569 | +landscape-client (0.15.0-gutsy1-landscape1) gutsy; urgency=low |
1570 | + |
1571 | + * Support for http_proxy and https_proxy variables in the |
1572 | + configuration file and in the interactive setup, as well as |
1573 | + --http-proxy and --https-proxy parameters is available (#151690). |
1574 | + * The client gracefully fails when unknown request-ids for |
1575 | + package-related operations are received (#151085). |
1576 | + * Child devices that have been removed are not reported when one of |
1577 | + their ancestors is also reported for deletion by the hardware |
1578 | + inventory plugin (#136497). |
1579 | + |
1580 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 26 Oct 2007 23:23:20 +0000 |
1581 | + |
1582 | +landscape-client (0.14.0-gutsy1-landscape1) gutsy; urgency=low |
1583 | + |
1584 | + * Failures that would occur is a user wasn't in the shadow file are |
1585 | + fixed (#102071). |
1586 | + * Whitespace surrounding process command-line names is removed |
1587 | + before they are reported to the server (#149112). |
1588 | + * Test failures, some related to DBUS on gutsy, are fixed. |
1589 | + |
1590 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 25 Oct 2007 00:03:06 +0000 |
1591 | + |
1592 | +landscape-client (0.13.0-gutsy1-landscape1) gutsy; urgency=low |
1593 | + |
1594 | + * When unknown package IDs are sent by the server message handling |
1595 | + is postponed until the client is aware of the unknown IDs |
1596 | + (#128796). |
1597 | + |
1598 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 17 Oct 2007 17:36:11 +0000 |
1599 | + |
1600 | +landscape-client (0.12.2-gutsy1-landscape1) gutsy; urgency=low |
1601 | + |
1602 | + * The client now reports it's version correctly. |
1603 | + |
1604 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 11 Oct 2007 21:32:24 +0000 |
1605 | + |
1606 | +landscape-client (0.12.1-gutsy1-landscape1) gutsy; urgency=low |
1607 | + |
1608 | + * A critical bug that would break configure-landscape is fixed. |
1609 | + |
1610 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 9 Oct 2007 21:10:02 +0000 |
1611 | + |
1612 | +landscape-client (0.12.0-gutsy1-landscape7) gutsy; urgency=low |
1613 | + |
1614 | + * Fixed typo in version string. |
1615 | + |
1616 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Sat, 6 Oct 2007 00:49:10 +0000 |
1617 | + |
1618 | +landscape-client (0.12.0-gutsy1-landscape6) gutsy; urgency=low |
1619 | + |
1620 | + * Updated Depends to require new smartpm-core 0.52 packages. |
1621 | + |
1622 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 5 Oct 2007 23:23:17 +0000 |
1623 | + |
1624 | +landscape-client (0.12.0-gutsy1-landscape5) gutsy; urgency=low |
1625 | + |
1626 | + * No upstream changes. New package build. |
1627 | + |
1628 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 4 Oct 2007 22:35:50 +0000 |
1629 | + |
1630 | +landscape-client (0.12.0-gutsy1-landscape4) gutsy; urgency=low |
1631 | + |
1632 | + * Updated package requires current version of smartpm-core. |
1633 | + |
1634 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 2 Oct 2007 21:37:56 +0000 |
1635 | + |
1636 | +landscape-client (0.11.0-gutsy1-landscape1) gutsy; urgency=low |
1637 | + |
1638 | + * The full command name for a process, where retrievable, is |
1639 | + reported to the server instead of just the first 16 characters |
1640 | + (#131878). |
1641 | + * The historic process plugin, unused for months, has been removed |
1642 | + (#134122). |
1643 | + * A new landscape-message command-line program is available. It |
1644 | + allows administrators to send messages from a console that end up |
1645 | + in the account history (#125083). |
1646 | + * The landscape-client.log file is now logrotated regularly |
1647 | + (#78494). |
1648 | + |
1649 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 13 Sep 2007 00:05:43 +0000 |
1650 | + |
1651 | +landscape-client (0.10.15-gutsy1-landscape1) gutsy; urgency=low |
1652 | + |
1653 | + * THIS IS A TEST BUILD! |
1654 | + * The full command name, where retrievable, is reported to the |
1655 | + server instead of just the first 16 characters (#131878). |
1656 | + * The historic process plugin, unused for months, has been removed |
1657 | + (#134122). |
1658 | + * A new landscape-message command-line program is available. It |
1659 | + allows administrators to send messages from a console that end up |
1660 | + in the account history (#125083). |
1661 | + * The landscape-client.log file is now logrotated regularly |
1662 | + (#78494). |
1663 | + |
1664 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 12 Sep 2007 22:48:19 +0000 |
1665 | + |
1666 | +landscape-client (0.10.12-1ubuntu1) feisty; urgency=low |
1667 | + |
1668 | + * New upstream release. |
1669 | + * Package Depends updated to use new smartpm-0.51-landscape4 |
1670 | + package. This makes the package installable on Ubuntu systems |
1671 | + with only the main repository enabled. |
1672 | + |
1673 | + -- Landscape Team <landscape-team@canonical.com> Tue, 7 Aug 2007 16:08:00 -0700 |
1674 | + |
1675 | +landscape-client (0.10.11-1ubuntu1) feisty; urgency=low |
1676 | + |
1677 | + * New upstream release. |
1678 | + * A bug related to package dependency reporting that would cause two |
1679 | + approvals for and upgrade package request has been fixed. |
1680 | + * Errors with the ping server are logged clearly now. |
1681 | + * A crashing postinit-related bug is fixed. |
1682 | + |
1683 | + -- Landscape Team <landscape-team@canonical.com> Fri, 3 Aug 2007 19:15:00 -0700 |
1684 | + |
1685 | +landscape-client (0.10.10-1ubuntu1) feisty; urgency=low |
1686 | + |
1687 | + * New upstream release. |
1688 | + * CA certificates are no longer hard-coded. The default set of CAs |
1689 | + in the system are used instead. |
1690 | + * The client connects to the server immediately when it detects |
1691 | + changes in packages and users. This dramatically reduces the |
1692 | + turn-around time of some operations. |
1693 | + * The new user and group change detection reports detailed |
1694 | + information to the server about changes made external to the |
1695 | + client, such as by local users. |
1696 | + * The client reports detailed information about the outcome of user |
1697 | + and group operations. |
1698 | + * The client has support for a new synchronization system. If |
1699 | + either the server or client detect inconsistencies in the data |
1700 | + they have they can request a synchronization to get back in sync. |
1701 | + * The client has support to calculate and report package upgrades. |
1702 | + * The hostname is reported when clients first register with the |
1703 | + server. |
1704 | + * A new configure-landscape script eases registration including |
1705 | + automated and interactive registration modes. |
1706 | + * The client includes VM size and sleep average in active process |
1707 | + data. |
1708 | + |
1709 | + -- Landscape Team <landscape-team@canonical.com> Thu, 28 Jun 2007 16:19:00 -0700 |
1710 | + |
1711 | +landscape-client (0.10.9-1ubuntu1) feisty; urgency=low |
1712 | + |
1713 | + * New upstream release. |
1714 | + * Package depends on python-gdbm to install correctly on systems |
1715 | + without it. |
1716 | + |
1717 | + -- Landscape Team <landscape-team@canonical.com> Fri, 8 Jun 2007 11:02:00 -0700 |
1718 | + |
1719 | +landscape-client (0.10.8-1ubuntu1) feisty; urgency=low |
1720 | + |
1721 | + * New upstream release. |
1722 | + * The changes that included the new configure-landscape helper |
1723 | + script have been removed. They were not quite ready for release. |
1724 | + * Added python-twisted-web to Debian package Depends to satisfy |
1725 | + dependencies introduced by the new ping plugin. |
1726 | + |
1727 | + -- Landscape Team <landscape-team@canonical.com> Thu, 7 Jun 2007 11:03:00 -0700 |
1728 | + |
1729 | +landscape-client (0.10.7-1ubuntu1) feisty; urgency=low |
1730 | + |
1731 | + * New upstream release. |
1732 | + * Package depends on new smartpm-core package which installs |
1733 | + correctly on dapper. |
1734 | + |
1735 | + -- Landscape Team <landscape-team@canonical.com> Wed, 6 Jun 2007 10:37:00 -0700 |
1736 | + |
1737 | +landscape-client (0.10.6-1ubuntu1) feisty; urgency=low |
1738 | + |
1739 | + * New upstream release. |
1740 | + * Mispelled smartpm-core version is fixed. |
1741 | + |
1742 | + -- Landscape Team <landscape-team@canonical.com> Mon, 1 Jun 2007 10:48:00 -0700 |
1743 | + |
1744 | +landscape-client (0.10.5-1ubuntu1) feisty; urgency=low |
1745 | + |
1746 | + * New upstream release. |
1747 | + * Mismatched operation status codes are fixed. |
1748 | + |
1749 | + -- Landscape Team <landscape-team@canonical.com> Thu, 31 May 2007 15:36:00 -0700 |
1750 | + |
1751 | +landscape-client (0.10.4-1ubuntu1) feisty; urgency=low |
1752 | + |
1753 | + * New upstream release. |
1754 | + * Links to a new version of smart with a fixed crontab entry. |
1755 | + |
1756 | + -- Landscape Team <landscape-team@canonical.com> Tue, 22 May 2007 23:29:00 -0700 |
1757 | + |
1758 | +landscape-client (0.10.3-1ubuntu1) feisty; urgency=low |
1759 | + |
1760 | + * New upstream release. |
1761 | + * A bug related to bpickle conversions with float-point values is |
1762 | + fixed (#114829). |
1763 | + |
1764 | + -- Landscape Team <landscape-team@canonical.com> Mon, 15 May 2007 16:31:00 -0700 |
1765 | + |
1766 | +landscape-client (0.10.2-1ubuntu1) feisty; urgency=low |
1767 | + |
1768 | + * New upstream release. |
1769 | + * New package includes previously missing package management plugin. |
1770 | + |
1771 | + -- Landscape Team <landscape-devel@lists.canonical.com> Fri, 11 May 2007 10:20:00 -0700 |
1772 | + |
1773 | +landscape-client (0.10.1-1ubuntu1) feisty; urgency=low |
1774 | + |
1775 | + * New upstream release. |
1776 | + * Minor fix in package management plugin timings. |
1777 | + |
1778 | + -- Landscape Team <landscape-devel@lists.canonical.com> Thu, 10 May 2007 10:00:00 -0700 |
1779 | + |
1780 | +landscape-client (0.10.0-1ubuntu1) feisty; urgency=low |
1781 | + |
1782 | + * New upstream release. |
1783 | + * Basic package management operations are now supported. The client |
1784 | + reports package information to the server and can install and/or |
1785 | + remove packages. |
1786 | + * The client uses the new operations system. Support for the now |
1787 | + unused action info system is gone. |
1788 | + * A minor bpickle bug was fixed. |
1789 | + |
1790 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Mon, 7 May 2007 20:16:00 -0700 |
1791 | + |
1792 | +landscape-client (0.9.6-1ubuntu1) feisty; urgency=low |
1793 | + |
1794 | + * New upstream release. |
1795 | + * Bugs related to the handling of DBus types are fixed on feisty. |
1796 | + |
1797 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 13 Apr 2007 18:06:10 -0700 |
1798 | + |
1799 | +landscape-client (0.9.5-1ubuntu1) feisty; urgency=low |
1800 | + |
1801 | + * New upstream release. |
1802 | + * Old-school and oddly formatted GECOS fields are handled correctly. |
1803 | + |
1804 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 30 Mar 2007 16:50:49 -0400 |
1805 | + |
1806 | +landscape-client (0.9.4-1ubuntu1) feisty; urgency=low |
1807 | + |
1808 | + * New upstream release. |
1809 | + * Change architecture to all. |
1810 | + |
1811 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 30 Mar 2007 12:46:23 -0400 |
1812 | + |
1813 | +landscape-client (0.9.3-1ubuntu1) feisty; urgency=low |
1814 | + |
1815 | + * New upstream release. |
1816 | + * Add override file. |
1817 | + * Bump application and package versions. |
1818 | + |
1819 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 29 Mar 2007 17:21:50 -0400 |
1820 | + |
1821 | +landscape-client (0.9.2-1ubuntu1) feisty; urgency=low |
1822 | + |
1823 | + * Bump debhelper version. |
1824 | + * Build-Depend on python-dev, lsb-release. |
1825 | + * Pre-Depend on debconf | debconf-2.0. |
1826 | + * Move ${python:Depends} to Depends. |
1827 | + * Make the packaging compatible with dapper and newer distro releases. |
1828 | + |
1829 | + -- Matthias Klose <doko@ubuntu.com> Wed, 28 Mar 2007 21:21:20 +0200 |
1830 | + |
1831 | +landscape-client (0.9.2-1) unstable; urgency=low |
1832 | + |
1833 | + * New upstream release. |
1834 | + * Really fixed package. |
1835 | + |
1836 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 21 Mar 2007 09:57:00 -0400 |
1837 | + |
1838 | +landscape-client (0.9.1-3) unstable; urgency=low |
1839 | + |
1840 | + * Really fixed package. |
1841 | + |
1842 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 20 Mar 2007 16:35:00 -0400 |
1843 | + |
1844 | +landscape-client (0.9.1-2) unstable; urgency=low |
1845 | + |
1846 | + * Fixed package. |
1847 | + |
1848 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 20 Mar 2007 16:25:00 -0400 |
1849 | + |
1850 | +landscape-client (0.9.1-1) unstable; urgency=low |
1851 | + |
1852 | + * New upstream release. |
1853 | + * bpickle encoding format has changed in a non-backwards compatible |
1854 | + way to fix float encoding-related problems. |
1855 | + * API version updated to 2.0. |
1856 | + |
1857 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 20 Mar 2007 15:06:17 -0400 |
1858 | + |
1859 | +landscape-client (0.9.0-1) unstable; urgency=low |
1860 | + |
1861 | + * New upstream release. |
1862 | + * Group-management related tasks such as add/remove member and |
1863 | + create group are now supported. |
1864 | + * Client reports hardware inventory information to the server. |
1865 | + * Unicode handling with regards to the passwd file is improved. |
1866 | + |
1867 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 9 Mar 2007 16:04:51 -0800 |
1868 | + |
1869 | +landscape-client (0.8.1-1) unstable; urgency=low |
1870 | + |
1871 | + * New upstream release. |
1872 | + * Account registration log message no longer exposes account |
1873 | + password. |
1874 | + |
1875 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 18 Jan 2007 23:07:00 -0800 |
1876 | + |
1877 | +landscape-client (0.8.0-1) unstable; urgency=low |
1878 | + |
1879 | + * New upstream release. |
1880 | + * Process monitoring logic stops trying to restart the client if too |
1881 | + many restarts occur during a short period of time. |
1882 | + * Client includes an SSL certificate to verify the server with. |
1883 | + * Package depends on python2.4-pycurl, which is necessary for the |
1884 | + new SSL support. |
1885 | + |
1886 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 18 Jan 2007 10:48:00 -0800 |
1887 | + |
1888 | +landscape-client (0.7.0-1) unstable; urgency=low |
1889 | + |
1890 | + * New upstream release. |
1891 | + * Client can daemonize itself and perform basic process monitoring. |
1892 | + * Client writes a useful log now. Command-line options have been |
1893 | + added to control log verbosity. |
1894 | + * Package depends on perl-modules, which is necessary for bare-bones |
1895 | + server installs. |
1896 | + |
1897 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 2 Jan 2007 12:54:00 -0800 |
1898 | + |
1899 | +landscape-client (0.6.1-1) unstable; urgency=low |
1900 | + |
1901 | + * User management plugin handles extra Ubuntu user fields. |
1902 | + |
1903 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 15 Dec 2006 10:22:00 -0800 |
1904 | + |
1905 | +landscape-client (0.6.0-2) unstable; urgency=low |
1906 | + |
1907 | + * Reverted to deprecated build rule to fix package breakage on |
1908 | + dapper. |
1909 | + |
1910 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 7 Dec 2006 10:54:00 -0800 |
1911 | + |
1912 | +landscape-client (0.6.0-1) unstable; urgency=low |
1913 | + |
1914 | + * New upstream release. |
1915 | + * The active-process-info plugin provides server-controllable |
1916 | + end/kill actions. |
1917 | + * Messages are no longer delivered twice if a broken message gets |
1918 | + into the message store. |
1919 | + |
1920 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 6 Dec 2006 14:47:00 -0800 |
1921 | + |
1922 | +landscape-client (0.5.0-1) unstable; urgency=low |
1923 | + |
1924 | + * New upstream release. |
1925 | + * Client-to-server exchanges now happen in a thread to avoid |
1926 | + blocking monitoring plugins. |
1927 | + * Problems that caused slow client registration have been fixed. |
1928 | + * The computer-info plugin now reports information about the |
1929 | + distribution installed on a machine. |
1930 | + |
1931 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 10 Nov 2006 12:47:00 -0800 |
1932 | + |
1933 | +landscape-client (0.4.0-1) unstable; urgency=low |
1934 | + |
1935 | + * New upstream release. |
1936 | + * Disk, load, memory/swap and temperature data is now reported at |
1937 | + 300s-aligned intervals. |
1938 | + * Improvements to registration system. |
1939 | + * Improvements to plugin infrastructure. |
1940 | + |
1941 | + -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 13 Oct 2006 09:25:00 -0300 |
1942 | + |
1943 | +landscape-client (0.3.0-1) unstable; urgency=low |
1944 | + |
1945 | + * New upstream release. |
1946 | + * Major reorganization of client code. |
1947 | + |
1948 | + -- Christopher Armstrong <radix@canonical.com> Tue, 22 Aug 2006 09:56:00 -0400 |
1949 | + |
1950 | +landscape-client (0.2.5-1) unstable; urgency=low |
1951 | + |
1952 | + * New upstream release. |
1953 | + * Fix a bug in the newly introduced client upgrade machinery. |
1954 | + |
1955 | + -- Christopher Armstrong <radix@canonical.com> Wed, 4 Aug 2006 10:45:00 -0500 |
1956 | + |
1957 | +landscape-client (0.2.4-1) unstable; urgency=low |
1958 | + |
1959 | + * New upstream release. |
1960 | + * User management should now be working. |
1961 | + |
1962 | + -- Christopher Armstrong <radix@canonical.com> Wed, 3 Aug 2006 15:12:00 -0500 |
1963 | + |
1964 | +landscape-client (0.2.3-1) unstable; urgency=low |
1965 | + |
1966 | + * New upstream release. |
1967 | + * Fixed a bug in the init script preventing landscape-client from |
1968 | + starting after reboots. |
1969 | + |
1970 | + -- Christopher Armstrong <radix@canonical.com> Wed, 26 Jul 2006 15:47:00 -0500 |
1971 | + |
1972 | +landscape-client (0.2.2-1) unstable; urgency=low |
1973 | + |
1974 | + * New upstream release. |
1975 | + |
1976 | + -- Christopher Armstrong <radix@canonical.com> Thu, 6 Jul 2006 18:38:00 -0500 |
1977 | + |
1978 | +landscape-client (0.2.1-1) unstable; urgency=low |
1979 | + |
1980 | + * Added support for debconf. |
1981 | + |
1982 | + -- Gustavo Niemeyer <gustavo@niemeyer.net> Wed, 5 Jul 2006 14:13:25 -0300 |
1983 | + |
1984 | +landscape-client (0.2.0-1) unstable; urgency=low |
1985 | + |
1986 | + * Initial (internal) release. |
1987 | + |
1988 | + -- Christopher Armstrong <radix@canonical.com> Wed, 28 Jun 2006 14:32:30 -0500 |
1989 | + |
1990 | +landscape-client (0.1) dapper; urgency=low |
1991 | + |
1992 | + * Empty placeholder package |
1993 | + |
1994 | + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 26 May 2006 06:37:55 -0700 |
1995 | |
1996 | === added file 'debian/cloud-default.conf' |
1997 | --- debian/cloud-default.conf 1970-01-01 00:00:00 +0000 |
1998 | +++ debian/cloud-default.conf 2012-04-22 14:14:27 +0000 |
1999 | @@ -0,0 +1,7 @@ |
2000 | +[client] |
2001 | +cloud = True |
2002 | +url = https://landscape.canonical.com/message-system |
2003 | +data_path = /var/lib/landscape/client |
2004 | +ping_url = http://landscape.canonical.com/ping |
2005 | +include_manager_plugins = ScriptExecution |
2006 | +script_users = ALL |
2007 | |
2008 | === added file 'debian/compat' |
2009 | --- debian/compat 1970-01-01 00:00:00 +0000 |
2010 | +++ debian/compat 2012-04-22 14:14:27 +0000 |
2011 | @@ -0,0 +1,1 @@ |
2012 | +5 |
2013 | |
2014 | === added file 'debian/control' |
2015 | --- debian/control 1970-01-01 00:00:00 +0000 |
2016 | +++ debian/control 2012-04-22 14:14:27 +0000 |
2017 | @@ -0,0 +1,76 @@ |
2018 | +Source: landscape-client |
2019 | +Section: admin |
2020 | +Priority: optional |
2021 | +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
2022 | +XSBC-Original-Maintainer: Landscape Team <landscape-team@canonical.com> |
2023 | +Build-Depends: debhelper (>= 5), po-debconf, python-dev, lsb-release, gawk, python-twisted-core, python-distutils-extra |
2024 | +Standards-Version: 3.8.0 |
2025 | +XS-Python-Version: >= 2.4, << 2.8 |
2026 | + |
2027 | +Package: landscape-common |
2028 | +Architecture: any |
2029 | +Depends: ${python:Depends}, ${misc:Depends}, ${extra:Depends}, |
2030 | + python-gnupginterface, |
2031 | + python-twisted-core, |
2032 | + python-apt, |
2033 | + ca-certificates, |
2034 | + python-gdbm, |
2035 | + lsb-release, |
2036 | + lsb-base, |
2037 | + adduser, |
2038 | + bc, |
2039 | + lshw |
2040 | +Suggests: ${extra:Suggests} |
2041 | +Replaces: landscape-client (<= 1.0.23-0ubuntu0.8.10) |
2042 | +Description: The Landscape administration system client - Common files |
2043 | + Landscape is a web-based tool for managing Ubuntu systems. This |
2044 | + package is necessary if you want your machine to be managed in a |
2045 | + Landscape account. |
2046 | + . |
2047 | + This package provides the core libraries. |
2048 | +XB-Python-Version: ${python:Versions} |
2049 | + |
2050 | +Package: landscape-client |
2051 | +Architecture: any |
2052 | +Depends: ${python:Depends}, ${misc:Depends}, ${extra:Depends}, |
2053 | + python-twisted-web, |
2054 | + python-twisted-names, |
2055 | + landscape-common (>= ${Source-Version}) |
2056 | +Suggests: ${extra:Suggests} |
2057 | +Description: The Landscape administration system client |
2058 | + Landscape is a web-based tool for managing Ubuntu systems. This |
2059 | + package is necessary if you want your machine to be managed in a |
2060 | + Landscape account. |
2061 | + . |
2062 | + This package provides the Landscape client and requires a Landscape account. |
2063 | +XB-Python-Version: ${python:Versions} |
2064 | + |
2065 | +Package: landscape-client-ui |
2066 | +Architecture: any |
2067 | +Depends: ${python:Depends}, ${misc:Depends}, |
2068 | + landscape-client (>= ${Source-Version}), |
2069 | + landscape-client-ui-install (>= ${Source-Version}), |
2070 | + python-gi, |
2071 | + python-dbus, |
2072 | + policykit-1, |
2073 | + gir1.2-notify-0.7, |
2074 | + gir1.2-gtk-3.0 |
2075 | +Description: The Landscape administration system client - UI configuration |
2076 | + Landscape is a web-based tool for managing Ubuntu systems. |
2077 | + . |
2078 | + This package provides the Landscape client configuration UI. |
2079 | +XB-Python-Version: ${python:Versions} |
2080 | + |
2081 | +Package: landscape-client-ui-install |
2082 | +Architecture: any |
2083 | +Depends: ${python:Depends}, ${misc:Depends}, |
2084 | + python-gi, |
2085 | + python-dbus, |
2086 | + policykit-1, |
2087 | + gir1.2-gtk-3.0, |
2088 | + python-aptdaemon.gtk3widgets |
2089 | +Description: The Landscape administration system client - UI installer |
2090 | + Landscape is a web-based tool for managing Ubuntu systems. |
2091 | + . |
2092 | + This package provides an automatic installer for landscape-client-ui. |
2093 | +XB-Python-Version: ${python:Versions} |
2094 | |
2095 | === added file 'debian/copyright' |
2096 | --- debian/copyright 1970-01-01 00:00:00 +0000 |
2097 | +++ debian/copyright 2012-04-22 14:14:27 +0000 |
2098 | @@ -0,0 +1,36 @@ |
2099 | +This package was debianized by |
2100 | + * Jamshed Kakar <jamshed.kakar@canonical.com> on Wed, 28 Jun 2006 |
2101 | + * Rick Clark <rick.clark@canonical.com> in Aug 2008 |
2102 | + * Dustin Kirkland <kirkland@canonical.com> in Aug 2008 |
2103 | + |
2104 | + Copyright (C) 2006-2008 Canonical Ltd. |
2105 | + |
2106 | +License: |
2107 | + |
2108 | +Upstream source is located at: https://code.launchpad.net/landscape-client |
2109 | + |
2110 | + |
2111 | +Copyright: |
2112 | + |
2113 | +The packaging of this software and the programs in this package are distributed |
2114 | +under the terms of the GNU General Public License, version 2 as distributed by |
2115 | +the Free Software Foundation. |
2116 | + |
2117 | +License: |
2118 | + Copyright (C) 2006-2008 Canonical Ltd. |
2119 | + |
2120 | + This program is free software: you can redistribute it and/or modify |
2121 | + it under the terms of the GNU General Public License version 2, |
2122 | + as published by the Free Software Foundation. |
2123 | + |
2124 | + This program is distributed in the hope that it will be useful, |
2125 | + but WITHOUT ANY WARRANTY; without even the implied warranty of |
2126 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2127 | + GNU General Public License for more details. |
2128 | + |
2129 | + You should have received a copy of the GNU General Public License |
2130 | + along with this program. If not, see <http://www.gnu.org/licenses/>. |
2131 | + |
2132 | +On Debian systems, the complete text of the GNU General |
2133 | +Public License can be found in `/usr/share/common-licenses/GPL-2'. |
2134 | + |
2135 | |
2136 | === added file 'debian/landscape-client-ui-install.install' |
2137 | --- debian/landscape-client-ui-install.install 1970-01-01 00:00:00 +0000 |
2138 | +++ debian/landscape-client-ui-install.install 2012-04-22 14:14:27 +0000 |
2139 | @@ -0,0 +1,4 @@ |
2140 | +usr/bin/landscape-client-ui-install |
2141 | +usr/share/applications/landscape-client-settings.desktop |
2142 | +usr/share/icons/hicolor/scalable/apps/preferences-management-service.svg |
2143 | +usr/share/locale |
2144 | |
2145 | === added file 'debian/landscape-client-ui.install' |
2146 | --- debian/landscape-client-ui.install 1970-01-01 00:00:00 +0000 |
2147 | +++ debian/landscape-client-ui.install 2012-04-22 14:14:27 +0000 |
2148 | @@ -0,0 +1,9 @@ |
2149 | +usr/bin/landscape-client-settings-mechanism |
2150 | +usr/bin/landscape-client-registration-mechanism |
2151 | +usr/bin/landscape-client-settings-ui |
2152 | +usr/share/dbus-1/system-services/com.canonical.LandscapeClientSettings.service |
2153 | +usr/share/dbus-1/system-services/com.canonical.LandscapeClientRegistration.service |
2154 | +usr/share/polkit-1/actions/com.canonical.LandscapeClientSettings.policy |
2155 | +etc/dbus-1/system.d/com.canonical.LandscapeClientSettings.conf |
2156 | +etc/dbus-1/system.d/com.canonical.LandscapeClientRegistration.conf |
2157 | +usr/share/glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml |
2158 | |
2159 | === added file 'debian/landscape-client.config' |
2160 | --- debian/landscape-client.config 1970-01-01 00:00:00 +0000 |
2161 | +++ debian/landscape-client.config 2012-04-22 14:14:27 +0000 |
2162 | @@ -0,0 +1,64 @@ |
2163 | +#!/bin/sh |
2164 | + |
2165 | +PACKAGE=landscape-client |
2166 | + |
2167 | +CONFIGFILE=/etc/landscape/client.conf |
2168 | +set -e |
2169 | +. /usr/share/debconf/confmodule |
2170 | + |
2171 | +var_in_file() { |
2172 | + var="$1" |
2173 | + file="$2" |
2174 | + line=$(grep "^$var\s*=\s*" "$file" 2>/dev/null || true) |
2175 | + echo "$line" |
2176 | +} |
2177 | + |
2178 | +get_var_from_file() { |
2179 | + var="$1" |
2180 | + file="$2" |
2181 | + val=$(grep "^$var\s*=\s*" "$file" 2>/dev/null | tail -n1 | sed "s/^.*=\s*//") |
2182 | + echo "$val" |
2183 | +} |
2184 | + |
2185 | +update_var() { |
2186 | + var="$1" |
2187 | + file="$2" |
2188 | + line=$(var_in_file $var $file) |
2189 | + if [ -n "$line" ]; then |
2190 | + val=$(get_var_from_file $var $file) |
2191 | + # Store value from config file in debconf. |
2192 | + db_set $PACKAGE/$var $val |
2193 | + fi |
2194 | +} |
2195 | + |
2196 | +# Load config file, if it exists. |
2197 | +if [ -e $CONFIGFILE ]; then |
2198 | + # Config file is "ini" type, not shell, so we cannot source it |
2199 | + # If a setting is defined in the config file, update it in debconf |
2200 | + # db. |
2201 | + update_var "computer_title" "$CONFIGFILE" |
2202 | + update_var "account_name" "$CONFIGFILE" |
2203 | + update_var "registration_password" "$CONFIGFILE" |
2204 | + update_var "url" "$CONFIGFILE" |
2205 | + update_var "exchange_interval" "$CONFIGFILE" |
2206 | + update_var "urgent_exchange_interval" "$CONFIGFILE" |
2207 | + update_var "ping_url" "$CONFIGFILE" |
2208 | + update_var "ping_interval" "$CONFIGFILE" |
2209 | + update_var "http_proxy" "$CONFIGFILE" |
2210 | + update_var "https_proxy" "$CONFIGFILE" |
2211 | + update_var "tags" "$CONFIGFILE" |
2212 | +fi |
2213 | + |
2214 | +# Ask questions. |
2215 | +# Do debconf configuration |
2216 | +db_get $PACKAGE/register_system |
2217 | +if [ "$RET" = true ]; then |
2218 | + priority=high |
2219 | +else |
2220 | + priority=medium |
2221 | +fi |
2222 | +db_input "$priority" $PACKAGE/computer_title || true |
2223 | +db_input "$priority" $PACKAGE/account_name || true |
2224 | +db_input "$priority" $PACKAGE/registration_password || true |
2225 | + |
2226 | +db_go || true |
2227 | |
2228 | === added file 'debian/landscape-client.docs' |
2229 | --- debian/landscape-client.docs 1970-01-01 00:00:00 +0000 |
2230 | +++ debian/landscape-client.docs 2012-04-22 14:14:27 +0000 |
2231 | @@ -0,0 +1,1 @@ |
2232 | +README |
2233 | |
2234 | === added file 'debian/landscape-client.init' |
2235 | --- debian/landscape-client.init 1970-01-01 00:00:00 +0000 |
2236 | +++ debian/landscape-client.init 2012-04-22 14:14:27 +0000 |
2237 | @@ -0,0 +1,112 @@ |
2238 | +#!/bin/sh |
2239 | + |
2240 | +### BEGIN INIT INFO |
2241 | +# Provides: landscape-client |
2242 | +# Required-Start: $local_fs $remote_fs |
2243 | +# Required-Stop: $local_fs $remote_fs |
2244 | +# Default-Start: 2 3 4 5 |
2245 | +# Default-Stop: 0 1 6 |
2246 | +# Short-Description: Landscape client daemons |
2247 | +# Description: The Landscape client daemons are needed so the |
2248 | +# Landscape server can manage a computer. |
2249 | +### END INIT INFO |
2250 | + |
2251 | +LANDSCAPE_DEFAULTS=/etc/default/landscape-client |
2252 | +NAME=landscape-client |
2253 | +DAEMON=/usr/bin/$NAME |
2254 | +PIDDIR=/var/run/landscape |
2255 | +SOCKETDIR=/var/lib/landscape/client/sockets |
2256 | +PIDFILE=$PIDDIR/$NAME.pid |
2257 | +RUN=0 # overridden in /etc/default/landscape-client |
2258 | +CLOUD=0 # overridden in /etc/default/landscape-client |
2259 | +DAEMON_GROUP=landscape |
2260 | +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" |
2261 | + |
2262 | +[ -f $DAEMON ] || exit 0 |
2263 | + |
2264 | +. /lib/lsb/init-functions |
2265 | +[ -f $LANDSCAPE_DEFAULTS ] && . $LANDSCAPE_DEFAULTS |
2266 | + |
2267 | +check_config () { |
2268 | + # This $RUN check should match the semantics of |
2269 | + # l.sysvconfig.SysVConfig.is_configured_to_run. |
2270 | + if [ $RUN -eq 0 ]; then |
2271 | + if [ $CLOUD -eq 1 ]; then |
2272 | + if landscape-is-cloud-managed; then |
2273 | + # Install the cloud default configuration file |
2274 | + cp /usr/share/landscape/cloud-default.conf /etc/landscape/client.conf |
2275 | + # Override default file for not going in this conditional again at |
2276 | + # next startup |
2277 | + sed -i "s/^RUN=.*/RUN=1/" $LANDSCAPE_DEFAULTS |
2278 | + if ! grep -q "^RUN=" $LANDSCAPE_DEFAULTS; then |
2279 | + echo "RUN=1" >> $LANDSCAPE_DEFAULTS |
2280 | + fi |
2281 | + else |
2282 | + echo "$NAME is not configured, please run landscape-config." |
2283 | + exit 0 |
2284 | + fi |
2285 | + else |
2286 | + echo "$NAME is not configured, please run landscape-config." |
2287 | + exit 0 |
2288 | + fi |
2289 | + fi |
2290 | +} |
2291 | + |
2292 | +case "$1" in |
2293 | + start) |
2294 | + check_config |
2295 | + log_daemon_msg "Starting the $NAME daemon" |
2296 | + if [ ! -e $PIDDIR ]; then |
2297 | + mkdir $PIDDIR |
2298 | + chown landscape $PIDDIR |
2299 | + fi |
2300 | + # Cleanup leftover sockets if there's no other landscape process |
2301 | + # running. This shouldn't be usually necessary, but it can |
2302 | + # happen in case the client crashed badly and the socket points |
2303 | + # to a process with the same PID. |
2304 | + if [ -d "${SOCKETDIR:?}" ]; then |
2305 | + if ! pidofproc -p "$PIDFILE" "$DAEMON" > /dev/null; then |
2306 | + find "${SOCKETDIR:?}" -maxdepth 1 -type s -print0 | xargs -r0 rm -f |
2307 | + find "${SOCKETDIR:?}" -maxdepth 1 -type l -print0 | xargs -r0 rm -f |
2308 | + fi |
2309 | + fi |
2310 | + |
2311 | + FULL_COMMAND="start-stop-daemon --start --quiet --oknodo --startas $DAEMON --pidfile $PIDFILE -g $DAEMON_GROUP -- --daemon --pid-file $PIDFILE" |
2312 | + if [ x"$DAEMON_USER" != x ]; then |
2313 | + sudo -u $DAEMON_USER $FULL_COMMAND |
2314 | + else |
2315 | + $FULL_COMMAND |
2316 | + fi |
2317 | + log_end_msg $? |
2318 | + ;; |
2319 | + |
2320 | + stop) |
2321 | + log_daemon_msg "Stopping $NAME daemon" |
2322 | + start-stop-daemon --retry 30 --stop --quiet --pidfile $PIDFILE |
2323 | + log_end_msg $? |
2324 | + ;; |
2325 | + |
2326 | + status) |
2327 | + # We want to maintain backward compatibility with Dapper, |
2328 | + # so we're not going to use status_of_proc() |
2329 | + pidofproc -p $PIDFILE $DAEMON >/dev/null |
2330 | + status=$? |
2331 | + if [ $status -eq 0 ]; then |
2332 | + log_success_msg "$NAME is running" |
2333 | + else |
2334 | + log_failure_msg "$NAME is not running" |
2335 | + fi |
2336 | + exit $status |
2337 | + ;; |
2338 | + |
2339 | + restart|force-reload) |
2340 | + $0 stop && $0 start |
2341 | + ;; |
2342 | + |
2343 | + *) |
2344 | + echo "Usage: $0 {start|stop|status|restart|force-reload}" |
2345 | + exit 1 |
2346 | + ;; |
2347 | +esac |
2348 | + |
2349 | +exit 0 |
2350 | |
2351 | === added file 'debian/landscape-client.install' |
2352 | --- debian/landscape-client.install 1970-01-01 00:00:00 +0000 |
2353 | +++ debian/landscape-client.install 2012-04-22 14:14:27 +0000 |
2354 | @@ -0,0 +1,14 @@ |
2355 | +usr/bin/landscape-broker |
2356 | +usr/bin/landscape-client |
2357 | +usr/bin/landscape-config |
2358 | +usr/bin/landscape-manager |
2359 | +usr/bin/landscape-message |
2360 | +usr/bin/landscape-monitor |
2361 | +usr/bin/landscape-package-changer |
2362 | +usr/bin/landscape-package-reporter |
2363 | +usr/bin/landscape-release-upgrader |
2364 | +usr/bin/landscape-is-cloud-managed |
2365 | +usr/bin/landscape-dbus-proxy |
2366 | +usr/share/landscape/cloud-default.conf |
2367 | +etc/dbus-1/system.d/landscape.conf |
2368 | +usr/lib/landscape |
2369 | |
2370 | === added file 'debian/landscape-client.logrotate' |
2371 | --- debian/landscape-client.logrotate 1970-01-01 00:00:00 +0000 |
2372 | +++ debian/landscape-client.logrotate 2012-04-22 14:14:27 +0000 |
2373 | @@ -0,0 +1,20 @@ |
2374 | +/var/log/landscape/watchdog.log /var/log/landscape/monitor.log /var/log/landscape/broker.log /var/log/landscape/manager.log { |
2375 | + weekly |
2376 | + rotate 4 |
2377 | + missingok |
2378 | + notifempty |
2379 | + compress |
2380 | + nocreate |
2381 | + postrotate |
2382 | + [ -f /var/run/landscape/landscape-client.pid ] && kill -s USR1 `cat /var/run/landscape/landscape-client.pid` > /dev/null 2>&1 || : |
2383 | + endscript |
2384 | +} |
2385 | + |
2386 | +/var/log/landscape/package-changer.log /var/log/landscape/package-reporter.log /var/log/landscape/sysinfo.log /var/log/landscape/release-upgrader.log { |
2387 | + weekly |
2388 | + rotate 4 |
2389 | + missingok |
2390 | + notifempty |
2391 | + compress |
2392 | + nocreate |
2393 | +} |
2394 | |
2395 | === added file 'debian/landscape-client.postinst' |
2396 | --- debian/landscape-client.postinst 1970-01-01 00:00:00 +0000 |
2397 | +++ debian/landscape-client.postinst 2012-04-22 14:14:27 +0000 |
2398 | @@ -0,0 +1,150 @@ |
2399 | +#!/bin/sh |
2400 | +set -e |
2401 | + |
2402 | +# summary of how this script can be called: |
2403 | +# * <postinst> `configure' <most-recently-configured-version> |
2404 | +# * <old-postinst> `abort-upgrade' <new version> |
2405 | +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> |
2406 | +# <new-version> |
2407 | +# * <postinst> `abort-remove' |
2408 | +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' |
2409 | +# <failed-install-package> <version> `removing' |
2410 | +# <conflicting-package> <version> |
2411 | +# for details, see http://www.debian.org/doc/debian-policy/ or |
2412 | +# the debian-policy package |
2413 | + |
2414 | +. /usr/share/debconf/confmodule |
2415 | +trap "db_stop || true" EXIT HUP INT QUIT TERM |
2416 | + |
2417 | +PACKAGE=landscape-client |
2418 | + |
2419 | +# Use the default installed Python. Running just "python" might run |
2420 | +# something from /usr/local/bin, which doesn't necessarily support |
2421 | +# running the landscape client. |
2422 | +PYTHON=/usr/bin/python |
2423 | + |
2424 | +case "$1" in |
2425 | + configure) |
2426 | + |
2427 | + CONFIG_FILE=/etc/landscape/client.conf |
2428 | + if [ ! -f $CONFIG_FILE ]; then |
2429 | + # Create new configuration, with private mode |
2430 | + TEMPFILE=$(mktemp -p /etc/landscape) |
2431 | + cat > $TEMPFILE <<END |
2432 | +[client] |
2433 | +log_level = info |
2434 | +url = https://landscape.canonical.com/message-system |
2435 | +ping_url = http://landscape.canonical.com/ping |
2436 | +data_path = /var/lib/landscape/client |
2437 | +END |
2438 | + chown landscape $TEMPFILE |
2439 | + mv $TEMPFILE $CONFIG_FILE |
2440 | + |
2441 | + # Get configuration values from debconf |
2442 | + db_get $PACKAGE/computer_title |
2443 | + COMPUTER_TITLE="${RET}" |
2444 | + db_get $PACKAGE/account_name |
2445 | + ACCOUNT_NAME="${RET}" |
2446 | + db_get $PACKAGE/registration_password |
2447 | + REGISTRATION_PASSWORD="${RET}" |
2448 | + db_get $PACKAGE/url |
2449 | + URL="${RET}" |
2450 | + db_get $PACKAGE/exchange_interval |
2451 | + EXCHANGE_INTERVAL="${RET}" |
2452 | + db_get $PACKAGE/urgent_exchange_interval |
2453 | + URGENT_EXCHANGE_INTERVAL="${RET}" |
2454 | + db_get $PACKAGE/ping_url |
2455 | + PING_URL="${RET}" |
2456 | + db_get $PACKAGE/ping_interval |
2457 | + PING_INTERVAL="${RET}" |
2458 | + db_get $PACKAGE/http_proxy |
2459 | + HTTP_PROXY="${RET}" |
2460 | + db_get $PACKAGE/https_proxy |
2461 | + HTTPS_PROXY="${RET}" |
2462 | + db_get $PACKAGE/tags |
2463 | + TAGS="${RET}" |
2464 | + |
2465 | + # If we got the needed information, actually do the registration. |
2466 | + if [ -n "$ACCOUNT_NAME" -a -n "$COMPUTER_TITLE" ]; then |
2467 | + landscape-config --silent --ok-no-register \ |
2468 | + --computer-title "$COMPUTER_TITLE" \ |
2469 | + --account-name "$ACCOUNT_NAME" \ |
2470 | + --registration-password "$REGISTRATION_PASSWORD" \ |
2471 | + --url "$URL" \ |
2472 | + --exchange-interval "$EXCHANGE_INTERVAL" \ |
2473 | + --urgent-exchange-interval "$URGENT_EXCHANGE_INTERVAL" \ |
2474 | + --ping-url "$PING_URL" \ |
2475 | + --ping-interval "$PING_INTERVAL" \ |
2476 | + --http-proxy "$HTTP_PROXY" \ |
2477 | + --https-proxy "$HTTPS_PROXY" \ |
2478 | + --tags "$TAGS" |
2479 | + fi |
2480 | + else |
2481 | + # Fix non-private permissions |
2482 | + chmod 0600 $CONFIG_FILE |
2483 | + fi |
2484 | + |
2485 | + # old monolithic clients have a single persist data file and a single |
2486 | + # package hash db. This data should be migrated to the new format |
2487 | + # where each service has a persist and the package data is kept in a |
2488 | + # sqlite database. |
2489 | + |
2490 | + DATA_BPICKLE=$DATA_DIR/client/data.bpickle |
2491 | + BROKER_BPICKLE=$DATA_DIR/client/broker.bpickle |
2492 | + |
2493 | + if [ -f $DATA_BPICKLE -a ! -f $BROKER_BPICKLE ]; then |
2494 | + $PYTHON -c "from landscape.upgraders import legacy; legacy.migrate_data_file('$DATA_DIR/client')" |
2495 | + mv $DATA_BPICKLE $DATA_BPICKLE.migrated |
2496 | + echo "Old monolithic client data file migrated to new format." |
2497 | + fi |
2498 | + |
2499 | + # Remove statoverride for smart-update, if there's one |
2500 | + smart_update=/usr/lib/landscape/smart-update |
2501 | + if dpkg-statoverride --list $smart_update >/dev/null 2>&1; then |
2502 | + dpkg-statoverride --remove $smart_update |
2503 | + fi |
2504 | + |
2505 | + # Add the setuid flag to apt-update, and make it be executable by |
2506 | + # users in the landscape group (that normally means landscape itself) |
2507 | + apt_update=/usr/lib/landscape/apt-update |
2508 | + if ! dpkg-statoverride --list $apt_update >/dev/null 2>&1; then |
2509 | + dpkg-statoverride --update --add root landscape 4754 $apt_update |
2510 | + fi |
2511 | + |
2512 | + # Remove old cron jobs |
2513 | + old_cron_job=/etc/cron.hourly/landscape-client |
2514 | + if [ -e $old_cron_job ]; then |
2515 | + rm $old_cron_job |
2516 | + fi |
2517 | + very_old_cron_job=/etc/cron.hourly/smartpm-core |
2518 | + if [ -e $very_old_cron_job ]; then |
2519 | + rm $very_old_cron_job |
2520 | + fi |
2521 | + |
2522 | + # Check if we're upgrading from a D-Bus version |
2523 | + if ! [ -z $2 ]; then |
2524 | + if dpkg --compare-versions $2 lt 1.5.1; then |
2525 | + # Launch a proxy service that will forward requests over DBus |
2526 | + # from the old package-changer to the new AMP-based broker. This |
2527 | + # is a one-off only needed for the DBus->AMP upgrade |
2528 | + start-stop-daemon -x /usr/bin/landscape-dbus-proxy -b -c landscape -u landscape -S |
2529 | + fi |
2530 | + fi |
2531 | + |
2532 | + ;; |
2533 | + |
2534 | + abort-upgrade|abort-remove|abort-deconfigure) |
2535 | + ;; |
2536 | + |
2537 | + *) |
2538 | + echo "postinst called with unknown argument \`$1'" >&2 |
2539 | + exit 1 |
2540 | + ;; |
2541 | +esac |
2542 | + |
2543 | +# dh_installdeb will replace this with shell code automatically |
2544 | +# generated by other debhelper scripts. |
2545 | + |
2546 | +#DEBHELPER# |
2547 | + |
2548 | +exit 0 |
2549 | |
2550 | === added file 'debian/landscape-client.postrm' |
2551 | --- debian/landscape-client.postrm 1970-01-01 00:00:00 +0000 |
2552 | +++ debian/landscape-client.postrm 2012-04-22 14:14:27 +0000 |
2553 | @@ -0,0 +1,50 @@ |
2554 | +#!/bin/sh |
2555 | +set -e |
2556 | + |
2557 | +# summary of how this script can be called: |
2558 | +# * <postrm> `remove' |
2559 | +# * <postrm> `purge' |
2560 | +# * <old-postrm> `upgrade' <new-version> |
2561 | +# * <new-postrm> `failed-upgrade' <old-version> |
2562 | +# * <new-postrm> `abort-install' |
2563 | +# * <new-postrm> `abort-install' <old-version> |
2564 | +# * <new-postrm> `abort-upgrade' <old-version> |
2565 | +# * <disappearer's-postrm> `disappear' <overwriter> |
2566 | +# <overwriter-version> |
2567 | +# for details, see http://www.debian.org/doc/debian-policy/ or |
2568 | +# the debian-policy package |
2569 | + |
2570 | +case "$1" in |
2571 | + purge) |
2572 | + LOG_DIR=/var/log/landscape |
2573 | + DATA_DIR=/var/lib/landscape |
2574 | + |
2575 | + rm -f "/etc/default/landscape-client" |
2576 | + |
2577 | + rm -f "${LOG_DIR}/manager.log"* |
2578 | + rm -f "${LOG_DIR}/monitor.log"* |
2579 | + rm -f "${LOG_DIR}/broker.log"* |
2580 | + rm -f "${LOG_DIR}/watchdog.log"* |
2581 | + rm -f "${LOG_DIR}/package-reporter.log"* |
2582 | + rm -f "${LOG_DIR}/package-changer.log"* |
2583 | + |
2584 | + rm -rf "${DATA_DIR}/client" |
2585 | + rm -rf "${DATA_DIR}/.gnupg" |
2586 | + |
2587 | + ;; |
2588 | + |
2589 | + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) |
2590 | + ;; |
2591 | + |
2592 | + *) |
2593 | + echo "postrm called with unknown argument \`$1'" >&2 |
2594 | + exit 1 |
2595 | + ;; |
2596 | +esac |
2597 | + |
2598 | +# dh_installdeb will replace this with shell code automatically |
2599 | +# generated by other debhelper scripts. |
2600 | + |
2601 | +#DEBHELPER# |
2602 | + |
2603 | +exit 0 |
2604 | |
2605 | === added file 'debian/landscape-client.prerm' |
2606 | --- debian/landscape-client.prerm 1970-01-01 00:00:00 +0000 |
2607 | +++ debian/landscape-client.prerm 2012-04-22 14:14:27 +0000 |
2608 | @@ -0,0 +1,45 @@ |
2609 | +#!/bin/sh |
2610 | +# prerm script for landscape-client |
2611 | +# |
2612 | +# see: dh_installdeb(1) |
2613 | + |
2614 | +set -e |
2615 | + |
2616 | +# summary of how this script can be called: |
2617 | +# * <prerm> `remove' |
2618 | +# * <old-prerm> `upgrade' <new-version> |
2619 | +# * <new-prerm> `failed-upgrade' <old-version> |
2620 | +# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> |
2621 | +# * <deconfigured's-prerm> `deconfigure' `in-favour' |
2622 | +# <package-being-installed> <version> `removing' |
2623 | +# <conflicting-package> <version> |
2624 | +# for details, see http://www.debian.org/doc/debian-policy/ or |
2625 | +# the debian-policy package |
2626 | + |
2627 | + |
2628 | +case "$1" in |
2629 | + remove|upgrade|deconfigure) |
2630 | + |
2631 | + # Remove statoverride for apt-update |
2632 | + apt_update=/usr/lib/landscape/apt-update |
2633 | + if dpkg-statoverride --list $apt_update >/dev/null 2>&1; then |
2634 | + dpkg-statoverride --remove $apt_update |
2635 | + fi |
2636 | + |
2637 | + ;; |
2638 | + |
2639 | + failed-upgrade) |
2640 | + ;; |
2641 | + |
2642 | + *) |
2643 | + echo "prerm called with unknown argument \`$1'" >&2 |
2644 | + exit 1 |
2645 | + ;; |
2646 | +esac |
2647 | + |
2648 | +# dh_installdeb will replace this with shell code automatically |
2649 | +# generated by other debhelper scripts. |
2650 | + |
2651 | +#DEBHELPER# |
2652 | + |
2653 | +exit 0 |
2654 | |
2655 | === added file 'debian/landscape-client.templates' |
2656 | --- debian/landscape-client.templates 1970-01-01 00:00:00 +0000 |
2657 | +++ debian/landscape-client.templates 2012-04-22 14:14:27 +0000 |
2658 | @@ -0,0 +1,77 @@ |
2659 | +Template: landscape-client/computer_title |
2660 | +Type: string |
2661 | +_Description: Computer Title: |
2662 | + Descriptive text to identify this computer uniquely in the |
2663 | + Landscape user interface. |
2664 | + |
2665 | +Template: landscape-client/account_name |
2666 | +Type: string |
2667 | +_Description: Account Name: |
2668 | + Short lowercase identifier of the Landscape account this computer |
2669 | + will be assigned. |
2670 | + |
2671 | +Template: landscape-client/registration_password |
2672 | +Type: password |
2673 | +_Description: Registration Password: |
2674 | + Client registration password for the given Landscape account. Only |
2675 | + needed if the given account is requesting a client registration |
2676 | + password. |
2677 | + |
2678 | +Template: landscape-client/url |
2679 | +Type: string |
2680 | +Default: https://landscape.canonical.com/message-system |
2681 | +_Description: Landscape Server URL: |
2682 | + The server URL to connect to. |
2683 | + |
2684 | +Template: landscape-client/exchange_interval |
2685 | +Type: string |
2686 | +Default: 900 |
2687 | +_Description: Message Exchange Interval: |
2688 | + Interval, in seconds, between normal message exchanges with the Landscape |
2689 | + server. |
2690 | + |
2691 | +Template: landscape-client/urgent_exchange_interval |
2692 | +Type: string |
2693 | +Default: 60 |
2694 | +_Description: Urgent Message Exchange Interval: |
2695 | + Interval, in seconds, between urgent message exchanges with the Landscape |
2696 | + server. |
2697 | + |
2698 | +Template: landscape-client/ping_url |
2699 | +Type: string |
2700 | +Default: http://landscape.canonical.com/ping |
2701 | +_Description: Landscape PingServer URL: |
2702 | + The URL to perform lightweight exchange initiation with. |
2703 | + |
2704 | +Template: landscape-client/ping_interval |
2705 | +Type: string |
2706 | +Default: 30 |
2707 | +_Description: Ping Interval: |
2708 | + Interval, in seconds, between client ping exchanges with the Landscape server. |
2709 | + |
2710 | +Template: landscape-client/http_proxy |
2711 | +Type: string |
2712 | +Default: |
2713 | +_Description: HTTP proxy (blank for none): |
2714 | + The URL of the HTTP proxy, if one is needed. |
2715 | + |
2716 | +Template: landscape-client/https_proxy |
2717 | +Type: string |
2718 | +Default: |
2719 | +_Description: HTTPS proxy (blank for none): |
2720 | + The URL of the HTTPS proxy, if one is needed. |
2721 | + |
2722 | +Template: landscape-client/tags |
2723 | +Type: string |
2724 | +Default: |
2725 | +_Description: Initial tags for first registration |
2726 | + Comma separated list of tags which will be assigned to this computer on its |
2727 | + first registration. Once the machine is registered, these tags can only be |
2728 | + changed using the Landscape server. |
2729 | + |
2730 | +Template: landscape-client/register_system |
2731 | +Type: boolean |
2732 | +Default: false |
2733 | +_Description: Register this system with the Landscape server? |
2734 | + Register this system with a preexisting Landscape account. Please |
2735 | + go to http://landscape.canonical.com if you need a Landscape account. |
2736 | |
2737 | === added file 'debian/landscape-common.config' |
2738 | --- debian/landscape-common.config 1970-01-01 00:00:00 +0000 |
2739 | +++ debian/landscape-common.config 2012-04-22 14:14:27 +0000 |
2740 | @@ -0,0 +1,10 @@ |
2741 | +#!/bin/sh |
2742 | + |
2743 | +PACKAGE=landscape-common |
2744 | + |
2745 | +set -e |
2746 | +. /usr/share/debconf/confmodule |
2747 | + |
2748 | +# Ask questions. |
2749 | +db_input medium $PACKAGE/sysinfo || true |
2750 | +db_go |
2751 | |
2752 | === added file 'debian/landscape-common.dirs' |
2753 | --- debian/landscape-common.dirs 1970-01-01 00:00:00 +0000 |
2754 | +++ debian/landscape-common.dirs 2012-04-22 14:14:27 +0000 |
2755 | @@ -0,0 +1,1 @@ |
2756 | +etc/update-motd.d |
2757 | |
2758 | === added file 'debian/landscape-common.install' |
2759 | --- debian/landscape-common.install 1970-01-01 00:00:00 +0000 |
2760 | +++ debian/landscape-common.install 2012-04-22 14:14:27 +0000 |
2761 | @@ -0,0 +1,3 @@ |
2762 | +usr/lib/python* |
2763 | +usr/bin/landscape-sysinfo |
2764 | +usr/share/landscape/landscape-sysinfo.wrapper |
2765 | |
2766 | === added file 'debian/landscape-common.postinst' |
2767 | --- debian/landscape-common.postinst 1970-01-01 00:00:00 +0000 |
2768 | +++ debian/landscape-common.postinst 2012-04-22 14:14:27 +0000 |
2769 | @@ -0,0 +1,107 @@ |
2770 | +#!/bin/sh |
2771 | +set -e |
2772 | + |
2773 | +# summary of how this script can be called: |
2774 | +# * <postinst> `configure' <most-recently-configured-version> |
2775 | +# * <old-postinst> `abort-upgrade' <new version> |
2776 | +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> |
2777 | +# <new-version> |
2778 | +# * <postinst> `abort-remove' |
2779 | +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' |
2780 | +# <failed-install-package> <version> `removing' |
2781 | +# <conflicting-package> <version> |
2782 | +# for details, see http://www.debian.org/doc/debian-policy/ or |
2783 | +# the debian-policy package |
2784 | + |
2785 | +. /usr/share/debconf/confmodule |
2786 | +trap "db_stop || true" EXIT HUP INT QUIT TERM |
2787 | + |
2788 | +PACKAGE=landscape-common |
2789 | + |
2790 | +# Use the default installed Python. Running just "python" might run |
2791 | +# something from /usr/local/bin, which doesn't necessarily support |
2792 | +# running the landscape client. |
2793 | +PYTHON=/usr/bin/python |
2794 | + |
2795 | +case "$1" in |
2796 | + configure) |
2797 | + |
2798 | + db_get $PACKAGE/sysinfo |
2799 | + # Choices: |
2800 | + # * Do not display sysinfo on login |
2801 | + # * Cache sysinfo in /etc/motd |
2802 | + # * Run sysinfo on every login |
2803 | + SYSINFO="${RET:-Cache sysinfo in /etc/motd}" |
2804 | + WRAPPER=/usr/share/landscape/landscape-sysinfo.wrapper |
2805 | + PROFILE_LOCATION=/etc/profile.d/50-landscape-sysinfo.sh |
2806 | + UPDATE_MOTD_LOCATION=/etc/update-motd.d/50-landscape-sysinfo |
2807 | + if [ "$RET" = "Cache sysinfo in /etc/motd" ]; then |
2808 | + rm -f $PROFILE_LOCATION 2>/dev/null || true |
2809 | + ln -sf $WRAPPER $UPDATE_MOTD_LOCATION |
2810 | + /usr/sbin/update-motd 2>/dev/null || true |
2811 | + elif [ "$RET" = "Run sysinfo on every login" ]; then |
2812 | + rm -f $UPDATE_MOTD_LOCATION 2>/dev/null || true |
2813 | + /usr/sbin/update-motd 2>/dev/null || true |
2814 | + ln -sf $WRAPPER $PROFILE_LOCATION |
2815 | + else |
2816 | + rm -f $UPDATE_MOTD_LOCATION 2>/dev/null || true |
2817 | + /usr/sbin/update-motd 2>/dev/null || true |
2818 | + rm -f $PROFILE_LOCATION || true |
2819 | + fi |
2820 | + |
2821 | + # 0.9.1 introduces non-backwards compatible changes. This detects |
2822 | + # whether or not the data is in the current format. If not, all |
2823 | + # existing data is removed. |
2824 | + DATA_DIR=/var/lib/landscape |
2825 | + |
2826 | + if [ -d $DATA_DIR/data ]; then |
2827 | + rm -rf $DATA_DIR/* |
2828 | + elif [ -f $DATA_DIR/client/data.bpickle ]; then |
2829 | + LAST_BYTE=`sed -n '$,$s/.*\(.\)/\1/p' $DATA_DIR/client/data.bpickle` |
2830 | + if [ "$LAST_BYTE" = e ]; then |
2831 | + rm -rf $DATA_DIR/* |
2832 | + fi |
2833 | + fi |
2834 | + |
2835 | + # Create landscape system user |
2836 | + if ! getent passwd landscape >/dev/null; then |
2837 | + adduser --quiet --system --group --disabled-password \ |
2838 | + --home /var/lib/landscape --no-create-home landscape |
2839 | + fi |
2840 | + |
2841 | + # Create landscape system group (for <= 1.0.29.1-0ubuntu0.9.04.0) |
2842 | + if ! getent group landscape >/dev/null; then |
2843 | + addgroup --quiet --system landscape |
2844 | + fi |
2845 | + |
2846 | + # Ensure primary group is landscape (for <= 1.0.29.1-0ubuntu0.9.04.0) |
2847 | + if ! usermod -g landscape landscape > /dev/null 2>&1; then |
2848 | + echo "ERROR: usermod -g landscape landscape failed." |
2849 | + fi |
2850 | + |
2851 | + # Fix prior ownerships, we exclude the custom-graph-scripts directory |
2852 | + # because there might script-generated files that we want to preserve |
2853 | + # the ownership of. |
2854 | + if [ -d /var/lib/landscape/client ]; then |
2855 | + find /var/lib/landscape/client/ -wholename /var/lib/landscape/client/custom-graph-scripts -prune -or -exec chown landscape {} \; > /dev/null 2>&1 |
2856 | + fi |
2857 | + [ -d /var/lib/landscape/.gnupg ] && chown -R landscape /var/lib/landscape/.gnupg || : |
2858 | + chown -R landscape /var/log/landscape |
2859 | + |
2860 | + ;; |
2861 | + |
2862 | + abort-upgrade|abort-remove|abort-deconfigure) |
2863 | + ;; |
2864 | + |
2865 | + *) |
2866 | + echo "postinst called with unknown argument \`$1'" >&2 |
2867 | + exit 1 |
2868 | + ;; |
2869 | +esac |
2870 | + |
2871 | +# dh_installdeb will replace this with shell code automatically |
2872 | +# generated by other debhelper scripts. |
2873 | + |
2874 | +#DEBHELPER# |
2875 | + |
2876 | +exit 0 |
2877 | |
2878 | === added file 'debian/landscape-common.postrm' |
2879 | --- debian/landscape-common.postrm 1970-01-01 00:00:00 +0000 |
2880 | +++ debian/landscape-common.postrm 2012-04-22 14:14:27 +0000 |
2881 | @@ -0,0 +1,40 @@ |
2882 | +#!/bin/sh |
2883 | +set -e |
2884 | + |
2885 | +# summary of how this script can be called: |
2886 | +# * <postrm> `remove' |
2887 | +# * <postrm> `purge' |
2888 | +# * <old-postrm> `upgrade' <new-version> |
2889 | +# * <new-postrm> `failed-upgrade' <old-version> |
2890 | +# * <new-postrm> `abort-install' |
2891 | +# * <new-postrm> `abort-install' <old-version> |
2892 | +# * <new-postrm> `abort-upgrade' <old-version> |
2893 | +# * <disappearer's-postrm> `disappear' <overwriter> |
2894 | +# <overwriter-version> |
2895 | +# for details, see http://www.debian.org/doc/debian-policy/ or |
2896 | +# the debian-policy package |
2897 | + |
2898 | +case "$1" in |
2899 | + purge) |
2900 | + LOG_DIR=/var/log/landscape |
2901 | + CONFIG_FILE=/etc/landscape/client.conf |
2902 | + deluser --quiet --system landscape >/dev/null || true |
2903 | + rm -f "${LOG_DIR}/sysinfo.log"* |
2904 | + rm -f "${CONFIG_FILE}" |
2905 | + ;; |
2906 | + |
2907 | + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) |
2908 | + ;; |
2909 | + |
2910 | + *) |
2911 | + echo "postrm called with unknown argument \`$1'" >&2 |
2912 | + exit 1 |
2913 | + ;; |
2914 | +esac |
2915 | + |
2916 | +# dh_installdeb will replace this with shell code automatically |
2917 | +# generated by other debhelper scripts. |
2918 | + |
2919 | +#DEBHELPER# |
2920 | + |
2921 | +exit 0 |
2922 | |
2923 | === added file 'debian/landscape-common.prerm' |
2924 | --- debian/landscape-common.prerm 1970-01-01 00:00:00 +0000 |
2925 | +++ debian/landscape-common.prerm 2012-04-22 14:14:27 +0000 |
2926 | @@ -0,0 +1,41 @@ |
2927 | +#!/bin/sh |
2928 | +# prerm script for landscape-common |
2929 | +# |
2930 | +# see: dh_installdeb(1) |
2931 | + |
2932 | +set -e |
2933 | + |
2934 | +# summary of how this script can be called: |
2935 | +# * <prerm> `remove' |
2936 | +# * <old-prerm> `upgrade' <new-version> |
2937 | +# * <new-prerm> `failed-upgrade' <old-version> |
2938 | +# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> |
2939 | +# * <deconfigured's-prerm> `deconfigure' `in-favour' |
2940 | +# <package-being-installed> <version> `removing' |
2941 | +# <conflicting-package> <version> |
2942 | +# for details, see http://www.debian.org/doc/debian-policy/ or |
2943 | +# the debian-policy package |
2944 | + |
2945 | + |
2946 | +case "$1" in |
2947 | + remove|upgrade|deconfigure) |
2948 | + rm -f /etc/update-motd.d/50-landscape-sysinfo 2>/dev/null || true |
2949 | + /usr/sbin/update-motd 2>/dev/null || true |
2950 | + rm -f /etc/profile.d/landscape-sysinfo.sh 2>/dev/null || true |
2951 | + ;; |
2952 | + |
2953 | + failed-upgrade) |
2954 | + ;; |
2955 | + |
2956 | + *) |
2957 | + echo "prerm called with unknown argument \`$1'" >&2 |
2958 | + exit 1 |
2959 | + ;; |
2960 | +esac |
2961 | + |
2962 | +# dh_installdeb will replace this with shell code automatically |
2963 | +# generated by other debhelper scripts. |
2964 | + |
2965 | +#DEBHELPER# |
2966 | + |
2967 | +exit 0 |
2968 | |
2969 | === added file 'debian/landscape-common.templates' |
2970 | --- debian/landscape-common.templates 1970-01-01 00:00:00 +0000 |
2971 | +++ debian/landscape-common.templates 2012-04-22 14:14:27 +0000 |
2972 | @@ -0,0 +1,20 @@ |
2973 | +Template: landscape-common/sysinfo |
2974 | +Type: select |
2975 | +# Translators beware! the following three strings form a single |
2976 | +# Choices menu. - Every one of these strings has to fit in a standard |
2977 | +# 80 characters console, as the fancy screen setup takes up some space |
2978 | +# try to keep below ~71 characters. |
2979 | +# DO NOT USE commas (,) in Choices translations otherwise |
2980 | +# this will break the choices shown to users |
2981 | +_Choices: Do not display sysinfo on login, Cache sysinfo in /etc/motd, Run sysinfo on every login |
2982 | +Default: Cache sysinfo in /etc/motd |
2983 | +_Description: landscape-sysinfo configuration: |
2984 | + Landscape includes a tool and a set of modules that can display |
2985 | + system status, information, and statistics on login. |
2986 | + . |
2987 | + This information can be gathered periodically (every 10 minutes) |
2988 | + and automatically written to /etc/motd. The data could be a few |
2989 | + minutes out-of-date. |
2990 | + . |
2991 | + Or, this information can be gathered at login. The data will be |
2992 | + more current, but might introduce a small delay at login. |
2993 | |
2994 | === added file 'debian/landscape-sysinfo.wrapper' |
2995 | --- debian/landscape-sysinfo.wrapper 1970-01-01 00:00:00 +0000 |
2996 | +++ debian/landscape-sysinfo.wrapper 2012-04-22 14:14:27 +0000 |
2997 | @@ -0,0 +1,14 @@ |
2998 | +#!/bin/sh |
2999 | +cores=$(grep -c ^processor /proc/cpuinfo 2>/dev/null) |
3000 | +[ "$cores" -eq "0" ] && cores=1 |
3001 | +threshold="${cores:-1}.0" |
3002 | +if [ $(echo "`cut -f1 -d ' ' /proc/loadavg` < $threshold" | bc) -eq 1 ]; then |
3003 | + echo |
3004 | + echo -n " System information as of " |
3005 | + /bin/date |
3006 | + echo |
3007 | + /usr/bin/landscape-sysinfo |
3008 | +else |
3009 | + echo |
3010 | + echo " System information disabled due to load higher than $threshold" |
3011 | +fi |
3012 | |
3013 | === added directory 'debian/po' |
3014 | === added file 'debian/po/POTFILES.in' |
3015 | --- debian/po/POTFILES.in 1970-01-01 00:00:00 +0000 |
3016 | +++ debian/po/POTFILES.in 2012-04-22 14:14:27 +0000 |
3017 | @@ -0,0 +1,2 @@ |
3018 | +[type: gettext/rfc822deb] landscape-client.templates |
3019 | +[type: gettext/rfc822deb] landscape-common.templates |
3020 | |
3021 | === added file 'debian/po/templates.pot' |
3022 | --- debian/po/templates.pot 1970-01-01 00:00:00 +0000 |
3023 | +++ debian/po/templates.pot 2012-04-22 14:14:27 +0000 |
3024 | @@ -0,0 +1,224 @@ |
3025 | +# SOME DESCRIPTIVE TITLE. |
3026 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
3027 | +# This file is distributed under the same license as the PACKAGE package. |
3028 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
3029 | +# |
3030 | +#, fuzzy |
3031 | +msgid "" |
3032 | +msgstr "" |
3033 | +"Project-Id-Version: PACKAGE VERSION\n" |
3034 | +"Report-Msgid-Bugs-To: landscape-client@packages.debian.org\n" |
3035 | +"POT-Creation-Date: 2012-03-07 17:07+0100\n" |
3036 | +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
3037 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
3038 | +"Language-Team: LANGUAGE <LL@li.org>\n" |
3039 | +"Language: \n" |
3040 | +"MIME-Version: 1.0\n" |
3041 | +"Content-Type: text/plain; charset=CHARSET\n" |
3042 | +"Content-Transfer-Encoding: 8bit\n" |
3043 | + |
3044 | +#. Type: string |
3045 | +#. Description |
3046 | +#: ../landscape-client.templates:1001 |
3047 | +msgid "Computer Title:" |
3048 | +msgstr "" |
3049 | + |
3050 | +#. Type: string |
3051 | +#. Description |
3052 | +#: ../landscape-client.templates:1001 |
3053 | +msgid "" |
3054 | +"Descriptive text to identify this computer uniquely in the Landscape user " |
3055 | +"interface." |
3056 | +msgstr "" |
3057 | + |
3058 | +#. Type: string |
3059 | +#. Description |
3060 | +#: ../landscape-client.templates:2001 |
3061 | +msgid "Account Name:" |
3062 | +msgstr "" |
3063 | + |
3064 | +#. Type: string |
3065 | +#. Description |
3066 | +#: ../landscape-client.templates:2001 |
3067 | +msgid "" |
3068 | +"Short lowercase identifier of the Landscape account this computer will be " |
3069 | +"assigned." |
3070 | +msgstr "" |
3071 | + |
3072 | +#. Type: password |
3073 | +#. Description |
3074 | +#: ../landscape-client.templates:3001 |
3075 | +msgid "Registration Password:" |
3076 | +msgstr "" |
3077 | + |
3078 | +#. Type: password |
3079 | +#. Description |
3080 | +#: ../landscape-client.templates:3001 |
3081 | +msgid "" |
3082 | +"Client registration password for the given Landscape account. Only needed " |
3083 | +"if the given account is requesting a client registration password." |
3084 | +msgstr "" |
3085 | + |
3086 | +#. Type: string |
3087 | +#. Description |
3088 | +#: ../landscape-client.templates:4001 |
3089 | +msgid "Landscape Server URL:" |
3090 | +msgstr "" |
3091 | + |
3092 | +#. Type: string |
3093 | +#. Description |
3094 | +#: ../landscape-client.templates:4001 |
3095 | +msgid "The server URL to connect to." |
3096 | +msgstr "" |
3097 | + |
3098 | +#. Type: string |
3099 | +#. Description |
3100 | +#: ../landscape-client.templates:5001 |
3101 | +msgid "Message Exchange Interval:" |
3102 | +msgstr "" |
3103 | + |
3104 | +#. Type: string |
3105 | +#. Description |
3106 | +#: ../landscape-client.templates:5001 |
3107 | +msgid "" |
3108 | +"Interval, in seconds, between normal message exchanges with the Landscape " |
3109 | +"server." |
3110 | +msgstr "" |
3111 | + |
3112 | +#. Type: string |
3113 | +#. Description |
3114 | +#: ../landscape-client.templates:6001 |
3115 | +msgid "Urgent Message Exchange Interval:" |
3116 | +msgstr "" |
3117 | + |
3118 | +#. Type: string |
3119 | +#. Description |
3120 | +#: ../landscape-client.templates:6001 |
3121 | +msgid "" |
3122 | +"Interval, in seconds, between urgent message exchanges with the Landscape " |
3123 | +"server." |
3124 | +msgstr "" |
3125 | + |
3126 | +#. Type: string |
3127 | +#. Description |
3128 | +#: ../landscape-client.templates:7001 |
3129 | +msgid "Landscape PingServer URL:" |
3130 | +msgstr "" |
3131 | + |
3132 | +#. Type: string |
3133 | +#. Description |
3134 | +#: ../landscape-client.templates:7001 |
3135 | +msgid "The URL to perform lightweight exchange initiation with." |
3136 | +msgstr "" |
3137 | + |
3138 | +#. Type: string |
3139 | +#. Description |
3140 | +#: ../landscape-client.templates:8001 |
3141 | +msgid "Ping Interval:" |
3142 | +msgstr "" |
3143 | + |
3144 | +#. Type: string |
3145 | +#. Description |
3146 | +#: ../landscape-client.templates:8001 |
3147 | +msgid "" |
3148 | +"Interval, in seconds, between client ping exchanges with the Landscape " |
3149 | +"server." |
3150 | +msgstr "" |
3151 | + |
3152 | +#. Type: string |
3153 | +#. Description |
3154 | +#: ../landscape-client.templates:9001 |
3155 | +msgid "HTTP proxy (blank for none):" |
3156 | +msgstr "" |
3157 | + |
3158 | +#. Type: string |
3159 | +#. Description |
3160 | +#: ../landscape-client.templates:9001 |
3161 | +msgid "The URL of the HTTP proxy, if one is needed." |
3162 | +msgstr "" |
3163 | + |
3164 | +#. Type: string |
3165 | +#. Description |
3166 | +#: ../landscape-client.templates:10001 |
3167 | +msgid "HTTPS proxy (blank for none):" |
3168 | +msgstr "" |
3169 | + |
3170 | +#. Type: string |
3171 | +#. Description |
3172 | +#: ../landscape-client.templates:10001 |
3173 | +msgid "The URL of the HTTPS proxy, if one is needed." |
3174 | +msgstr "" |
3175 | + |
3176 | +#. Type: string |
3177 | +#. Description |
3178 | +#: ../landscape-client.templates:11001 |
3179 | +msgid "Initial tags for first registration" |
3180 | +msgstr "" |
3181 | + |
3182 | +#. Type: string |
3183 | +#. Description |
3184 | +#: ../landscape-client.templates:11001 |
3185 | +msgid "" |
3186 | +"Comma separated list of tags which will be assigned to this computer on its " |
3187 | +"first registration. Once the machine is registered, these tags can only be " |
3188 | +"changed using the Landscape server." |
3189 | +msgstr "" |
3190 | + |
3191 | +#. Type: boolean |
3192 | +#. Description |
3193 | +#: ../landscape-client.templates:12001 |
3194 | +msgid "Register this system with the Landscape server?" |
3195 | +msgstr "" |
3196 | + |
3197 | +#. Type: boolean |
3198 | +#. Description |
3199 | +#: ../landscape-client.templates:12001 |
3200 | +msgid "" |
3201 | +"Register this system with a preexisting Landscape account. Please go to " |
3202 | +"http://landscape.canonical.com if you need a Landscape account." |
3203 | +msgstr "" |
3204 | + |
3205 | +#. Type: select |
3206 | +#. Choices |
3207 | +#. Translators beware! the following three strings form a single |
3208 | +#. Choices menu. - Every one of these strings has to fit in a standard |
3209 | +#. 80 characters console, as the fancy screen setup takes up some space |
3210 | +#. try to keep below ~71 characters. |
3211 | +#. DO NOT USE commas (,) in Choices translations otherwise |
3212 | +#. this will break the choices shown to users |
3213 | +#: ../landscape-common.templates:1001 |
3214 | +msgid "" |
3215 | +"Do not display sysinfo on login, Cache sysinfo in /etc/motd, Run sysinfo on " |
3216 | +"every login" |
3217 | +msgstr "" |
3218 | + |
3219 | +#. Type: select |
3220 | +#. Description |
3221 | +#: ../landscape-common.templates:1002 |
3222 | +msgid "landscape-sysinfo configuration:" |
3223 | +msgstr "" |
3224 | + |
3225 | +#. Type: select |
3226 | +#. Description |
3227 | +#: ../landscape-common.templates:1002 |
3228 | +msgid "" |
3229 | +"Landscape includes a tool and a set of modules that can display system " |
3230 | +"status, information, and statistics on login." |
3231 | +msgstr "" |
3232 | + |
3233 | +#. Type: select |
3234 | +#. Description |
3235 | +#: ../landscape-common.templates:1002 |
3236 | +msgid "" |
3237 | +"This information can be gathered periodically (every 10 minutes) and " |
3238 | +"automatically written to /etc/motd. The data could be a few minutes out-of-" |
3239 | +"date." |
3240 | +msgstr "" |
3241 | + |
3242 | +#. Type: select |
3243 | +#. Description |
3244 | +#: ../landscape-common.templates:1002 |
3245 | +msgid "" |
3246 | +"Or, this information can be gathered at login. The data will be more " |
3247 | +"current, but might introduce a small delay at login." |
3248 | +msgstr "" |
3249 | |
3250 | === added file 'debian/pycompat' |
3251 | --- debian/pycompat 1970-01-01 00:00:00 +0000 |
3252 | +++ debian/pycompat 2012-04-22 14:14:27 +0000 |
3253 | @@ -0,0 +1,1 @@ |
3254 | +2 |
3255 | |
3256 | === added file 'debian/rules' |
3257 | --- debian/rules 1970-01-01 00:00:00 +0000 |
3258 | +++ debian/rules 2012-04-22 14:14:27 +0000 |
3259 | @@ -0,0 +1,128 @@ |
3260 | +#!/usr/bin/make -f |
3261 | + |
3262 | +dist_release := $(shell lsb_release -cs) |
3263 | +ifneq ($(dist_release),dapper) |
3264 | + use_pycentral = yes |
3265 | +endif |
3266 | +ifeq (,$(filter $(dist_release), hardy lucid)) |
3267 | + use_dhpython2 = yes |
3268 | +endif |
3269 | + |
3270 | +dh_extra_flags = -plandscape-common -plandscape-client |
3271 | +ifneq (,$(filter $(dist_release),precise)) |
3272 | + # We want landscape-client-ui only from precise onward |
3273 | + dh_extra_flags += -plandscape-client-ui -plandscape-client-ui-install |
3274 | +endif |
3275 | + |
3276 | +-include /usr/share/python/python.mk |
3277 | +ifeq (,$(py_sitename)) |
3278 | + py_sitename = site-packages |
3279 | + py_libdir = /usr/lib/python$(subst python,,$(1))/site-packages |
3280 | + py_sitename_sh = $(py_sitename) |
3281 | + py_libdir_sh = $(py_libdir) |
3282 | +endif |
3283 | + |
3284 | +package = landscape-client |
3285 | +root_dir = debian/tmp/ |
3286 | + |
3287 | +revision = $(shell dpkg-parsechangelog | grep ^Version | cut -f 2 -d " "| cut -f 2 -d "-") |
3288 | + |
3289 | +landscape_common_substvars = debian/landscape-common.substvars |
3290 | +landscape_client_substvars = debian/landscape-client.substvars |
3291 | + |
3292 | +build: build-stamp |
3293 | +build-stamp: |
3294 | + dh_testdir |
3295 | + sed -i -e "s/^DEBIAN_REVISION = \"\"/DEBIAN_REVISION = \"-$(revision)\"/g" landscape/__init__.py |
3296 | + python setup.py build |
3297 | + make -C apt-update |
3298 | + touch build-stamp |
3299 | + |
3300 | +clean: |
3301 | + dh_testdir |
3302 | + dh_testroot |
3303 | + rm -f build-stamp |
3304 | + rm -rf build |
3305 | + make -C apt-update clean |
3306 | + dh_clean |
3307 | + debconf-updatepo |
3308 | + sed -i -e "s/^DEBIAN_REVISION = .*/DEBIAN_REVISION = \"\"/g" landscape/__init__.py |
3309 | + |
3310 | +install: build |
3311 | + dh_testdir |
3312 | + dh_testroot |
3313 | + dh_clean -k |
3314 | + dh_installdirs \ |
3315 | + etc/landscape \ |
3316 | + var/lib/landscape \ |
3317 | + var/log/landscape \ |
3318 | + usr/share/landscape |
3319 | + |
3320 | + python setup.py install --root $(root_dir) $(py_setup_install_args) |
3321 | + |
3322 | + install -D -o root -g root -m 755 debian/landscape-sysinfo.wrapper $(root_dir)/usr/share/landscape/landscape-sysinfo.wrapper |
3323 | + install -D -o root -g root -m 644 debian/cloud-default.conf $(root_dir)/usr/share/landscape/cloud-default.conf |
3324 | + install -D -o root -g root -m 755 apt-update/apt-update $(root_dir)/usr/lib/landscape/apt-update |
3325 | + install -D -o root -g root -m 644 dbus/landscape.conf $(root_dir)/etc/dbus-1/system.d/landscape.conf |
3326 | + |
3327 | +binary-indep: |
3328 | +# do nothing |
3329 | +# |
3330 | +binary-arch: build install |
3331 | + # That's not present in Ubuntu releases we still support, so |
3332 | + # we're just installing the lintian overrides file by hand |
3333 | + # for now. |
3334 | + #dh_lintian |
3335 | + dh_testdir |
3336 | + dh_testroot |
3337 | + dh_installdocs |
3338 | + dh_installman -p landscape-client man/landscape-client.1 man/landscape-config.1 man/landscape-message.1 |
3339 | + dh_installchangelogs |
3340 | + dh_install --sourcedir debian/tmp/ |
3341 | + dh_installinit -- start 45 2 3 4 5 . stop 15 0 1 6 . |
3342 | + dh_installlogrotate |
3343 | + dh_installdebconf |
3344 | + dh_compress |
3345 | + dh_fixperms |
3346 | + |
3347 | +ifneq (,$(findstring $(dist_release),hardy)) |
3348 | + # We depend on bug-fixed versions of python-dbus and pycurl on hardy |
3349 | + echo "extra:Depends=python-dbus" >> $(landscape_common_substvars) |
3350 | + echo "extra:Depends=python-pycurl, hal" >> $(landscape_client_substvars) |
3351 | + # The python-image-store-proxy package is needed for the eucalyptus plugin |
3352 | + echo "extra:Suggests=python-image-store-proxy" >> $(landscape_common_substvars) |
3353 | +endif |
3354 | +ifneq (,$(filter $(dist_release),lucid)) |
3355 | + # We want libpam-modules in lucid |
3356 | + echo "extra:Depends=libpam-modules (>= 1.0.1-9ubuntu3), python-dbus" >> $(landscape_common_substvars) |
3357 | + echo "extra:Depends=python-pycurl, hal" >> $(landscape_client_substvars) |
3358 | +endif |
3359 | +ifeq (,$(filter $(dist_release),hardy lucid)) |
3360 | + # Starting natty, no more hal or dbus |
3361 | + echo "extra:Depends=libpam-modules (>= 1.0.1-9ubuntu3)" >> $(landscape_common_substvars) |
3362 | + echo "extra:Depends=python-pycurl, gir1.2-gudev-1.0 (>= 165-0ubuntu2)" >> $(landscape_client_substvars) |
3363 | + echo "extra:Suggests=python-dbus, hal" >> $(landscape_client_substvars) |
3364 | +endif |
3365 | + |
3366 | +ifeq ($(use_dhpython2),yes) |
3367 | + dh_python2 --no-guessing-versions |
3368 | +else |
3369 | + ifeq ($(use_pycentral),yes) |
3370 | + ifneq (,$(py_setup_install_args)) |
3371 | + DH_PYCENTRAL=include-links dh_pycentral |
3372 | + else |
3373 | + DH_PYCENTRAL=nomove dh_pycentral |
3374 | + endif |
3375 | + else |
3376 | + dh_python |
3377 | + endif |
3378 | +endif |
3379 | + dh_installdeb $(dh_extra_flags) |
3380 | + dh_gencontrol $(dh_extra_flags) |
3381 | + dh_md5sums $(dh_extra_flags) |
3382 | + dh_builddeb $(dh_extra_flags) |
3383 | + |
3384 | + |
3385 | +binary: binary-arch binary-indep |
3386 | + |
3387 | +.PHONY: binary binary-arch binary-indep clean |
3388 | |
3389 | === added directory 'dev' |
3390 | === renamed directory 'dev' => 'dev.moved' |
3391 | === added file 'dev/dns-server' |
3392 | --- dev/dns-server 1970-01-01 00:00:00 +0000 |
3393 | +++ dev/dns-server 2012-04-22 14:14:27 +0000 |
3394 | @@ -0,0 +1,99 @@ |
3395 | +#!/usr/bin/env python |
3396 | +""" |
3397 | +This script creates a DNS server that has enough functionality to test |
3398 | +the server autodiscovery feature of landscape client. |
3399 | + |
3400 | +Landscape client uses /etc/resolv.conf to find the location of name servers. |
3401 | +To have landscape client use this server, make sure that: |
3402 | + |
3403 | +nameserver 127.0.0.1 |
3404 | + |
3405 | +is the first nameserver in /etc/resolv.conf. Linux name lookups only support |
3406 | +port 53, so this program must run on port 53 in order to work. Be aware that |
3407 | +NetworkManager overwrites this file any time your network configuration |
3408 | +changes. |
3409 | + |
3410 | +This program does not return enough information for a tool like dig to complete |
3411 | +successfully. If this is needed, use Bind 9, detailed at |
3412 | +https://wiki.canonical.com/Landscape/SpecRegistry/0082 |
3413 | +""" |
3414 | + |
3415 | +import argparse |
3416 | +import sys |
3417 | +from twisted.internet import reactor, defer |
3418 | +from twisted.names import dns, common |
3419 | +from twisted.names.server import DNSServerFactory |
3420 | + |
3421 | + |
3422 | +PORT = 5553 |
3423 | +SRV_RESPONSE = 'lds1.mylandscapehost.com' |
3424 | +A_RESPONSE = '127.0.0.1' |
3425 | + |
3426 | + |
3427 | +class SimpleResolver(common.ResolverBase): |
3428 | + def _lookup(self, name, cls, typ, timeout): |
3429 | + """ |
3430 | + Respond to DNS requests. See documentation for |
3431 | + L{twisted.names.common.ResolverBase}. |
3432 | + """ |
3433 | + # This nameserver returns the same result all the time, regardless |
3434 | + # of what name the client asks for. |
3435 | + results = [] |
3436 | + ttl = 60 |
3437 | + if typ == dns.SRV: |
3438 | + record = dns.Record_SRV(0, 1, 80, SRV_RESPONSE, ttl) |
3439 | + owner = '_landscape._tcp.mylandscapehost.com' |
3440 | + results.append(dns.RRHeader(owner, record.TYPE, dns.IN, ttl, |
3441 | + record, auth=True)) |
3442 | + elif typ == dns.A: |
3443 | + record = dns.Record_A(A_RESPONSE) |
3444 | + owner = 'landscape.localdomain' |
3445 | + results.append(dns.RRHeader(owner, record.TYPE, dns.IN, ttl, |
3446 | + record, auth=True)) |
3447 | + |
3448 | + authority = [] |
3449 | + return defer.succeed((results, authority, [])) |
3450 | + |
3451 | + |
3452 | +def parse_command_line(args): |
3453 | + global SRV_RESPONSE, A_RESPONSE, PORT |
3454 | + description = """ |
3455 | + This test tool responds to DNS queries for SRV and A records. It always |
3456 | + responds with the same result regardless of the query string sent by the |
3457 | + client. |
3458 | + |
3459 | + To test this tool, try the following commands: |
3460 | + dig -p 5553 @127.0.0.1 SRV _landscape._tcp.mylandscapehost.com |
3461 | + |
3462 | + dig -p 5553 @127.0.0.1 localhost.localdomain |
3463 | + """ |
3464 | + parser = argparse.ArgumentParser(description=description) |
3465 | + parser.add_argument("--srv-response", type=str, default=SRV_RESPONSE, |
3466 | + help="Give this reply to SRV queries (eg: localhost)") |
3467 | + parser.add_argument("--a-response", type=str, default=A_RESPONSE, |
3468 | + help="Give this reply to A queries (eg: 127.0.0.1)") |
3469 | + parser.add_argument("--port", type=int, default=PORT, |
3470 | + help="Listen on this port (default 5553). DNS " |
3471 | + "normally runs on port 53") |
3472 | + |
3473 | + args = vars(parser.parse_args()) |
3474 | + SRV_RESPONSE = args["srv_response"] |
3475 | + A_RESPONSE = args["a_response"] |
3476 | + PORT = args["port"] |
3477 | + |
3478 | + |
3479 | +def main(): |
3480 | + parse_command_line(sys.argv) |
3481 | + |
3482 | + simple_resolver = SimpleResolver() |
3483 | + factory = DNSServerFactory(authorities=[simple_resolver], verbose=1) |
3484 | + protocol = dns.DNSDatagramProtocol(factory) |
3485 | + print "starting reactor on port %s.." % PORT |
3486 | + reactor.listenTCP(PORT, factory) |
3487 | + reactor.listenUDP(PORT, protocol) |
3488 | + reactor.run() |
3489 | + print "reactor stopped..." |
3490 | + |
3491 | + |
3492 | +if __name__ == "__main__": |
3493 | + main() |
3494 | |
3495 | === added file 'dev/landscape-client-vm' |
3496 | --- dev/landscape-client-vm 1970-01-01 00:00:00 +0000 |
3497 | +++ dev/landscape-client-vm 2012-04-22 14:14:27 +0000 |
3498 | @@ -0,0 +1,178 @@ |
3499 | +#!/bin/sh -e |
3500 | + |
3501 | +help () { |
3502 | + cat <<EOF |
3503 | +$0 [OPTION] ... <release>: build a landscape-client VM |
3504 | +for the specified release. Available options: |
3505 | + |
3506 | + -m, --mirror <mirror> The Ubuntu mirror to use to build the VM, and |
3507 | + for the APT sources inside the VM itself. |
3508 | + If you want to use apt-proxy, you have to |
3509 | + modify the apt-proxy-v2.conf file to make |
3510 | + apt-proxy listen to your actual network |
3511 | + interface address, instead of the loopback one. |
3512 | + For example: |
3513 | + ;; Server IP to listen on |
3514 | + address = 192.168.1.162 |
3515 | + -s, --server <host> The hostname of the Landscape server the client |
3516 | + should connect to. |
3517 | + -a, --account <account> The name of the Landscape account to use. |
3518 | + -p, --password <password> The password for the Landscape account. |
3519 | + -P, --profile <profile> Package profile to use, can be server or |
3520 | + desktop. |
3521 | + -k, --ssl-key <key> Specify an SSL key to be used in the client |
3522 | + config. |
3523 | + -r, --repository <ppa> Specify the PPA holding the client packages. |
3524 | + -b, --build <yes|no> If yes, the landscape-client packages from this |
3525 | + branch will be built and installed inside the |
3526 | + VM, otherwise they will be pulled from the APT |
3527 | + repositories. |
3528 | + |
3529 | +For example, this script can be invoked like this: |
3530 | + |
3531 | +./dev/landscape-client-vm --password <LANDSCAPE_DEVEL_ACCOUNT_PW> intrepid |
3532 | + |
3533 | +where <LANDSCAPE_DEVEL_ACCOUNT_PW> is the account password of the |
3534 | +landscape-devel account on the Landscape staging server (or you can specify |
3535 | +another account with the --account parameter). |
3536 | + |
3537 | +The built VM will be stored under ./build/intrepid along with some other |
3538 | +files. To launch the VM, cd to ./build/intrepid and issue: |
3539 | +$ ./run |
3540 | +Once it's booted you can log into it with: |
3541 | +$ ./ssh |
3542 | +EOF |
3543 | +} |
3544 | + |
3545 | +OPTS=$(getopt -o hm:s:a:p:P:k:r:b: --long help,mirror:,server:,account:,password:,profile:,ssl-key:,repository:,build: -- "$@") |
3546 | + |
3547 | +if [ $? != 0 ]; then |
3548 | + exit 1 |
3549 | +fi |
3550 | + |
3551 | +eval set -- "$OPTS" |
3552 | + |
3553 | +MIRROR=http://archive.ubuntu.com/ubuntu |
3554 | +SERVER=staging.landscape.canonical.com |
3555 | +ACCOUNT=landscape-devel |
3556 | +PASSWORD= |
3557 | +PROFILE=server |
3558 | +SSL_KEY= |
3559 | +PPA=landscape/trunk |
3560 | +BUILD=yes |
3561 | + |
3562 | +while true ; do |
3563 | + case "$1" in |
3564 | + -h|--help) help; exit 1; shift ;; |
3565 | + -m|--mirror) MIRROR=$2; shift 2 ;; |
3566 | + -s|--server) SERVER=$2; shift 2;; |
3567 | + -a|--account) ACCOUNT=$2; shift 2;; |
3568 | + -p|--password) PASSWORD=$2; shift 2;; |
3569 | + -P|--profile) PROFILE=$2; shift 2;; |
3570 | + -S|--ssl-key) SSL_KEY=$2; shift 2;; |
3571 | + -r|--repository) PPA=$2; shift 2;; |
3572 | + -b|--build) BUILD=$2; shift 2;; |
3573 | + --) shift ; break ;; |
3574 | + *) echo "Internal error!" ; exit 1 ;; |
3575 | + esac |
3576 | +done |
3577 | + |
3578 | +if [ "$1" = "" ]; then |
3579 | + help |
3580 | + exit |
3581 | +fi |
3582 | + |
3583 | +RELEASE=$1 |
3584 | +TOPDIR=$(pwd)/build/${RELEASE}-${PROFILE} |
3585 | +SSH_KEY=$TOPDIR/ssh_key |
3586 | +SSH_PORT=3322 |
3587 | +ROOTSIZE=8192 |
3588 | + |
3589 | +rm -fR $TOPDIR |
3590 | +mkdir -p $TOPDIR |
3591 | +ssh-keygen -N '' -f $SSH_KEY |
3592 | + |
3593 | +cd $TOPDIR |
3594 | + |
3595 | +cat > config <<EOF |
3596 | +[client] |
3597 | +url = https://${SERVER}/message-system |
3598 | +computer_title = ${RELEASE} test VM $$ |
3599 | +data_path = /var/lib/landscape/client |
3600 | +script_users = ALL |
3601 | +ping_url = http://${SERVER}/ping |
3602 | +include_manager_plugins = ScriptExecution |
3603 | +account_name = ${ACCOUNT} |
3604 | +registration_password = ${PASSWORD} |
3605 | +#log_level = debug |
3606 | +EOF |
3607 | + |
3608 | +if ! [ "$WITH_SSL" = "" ]; then |
3609 | + echo ssl_public_key = $SSL_KEY >> config |
3610 | +fi |
3611 | + |
3612 | +cat > script-wrapper <<EOF |
3613 | +#!/bin/sh -e |
3614 | +chroot \$1 /root/script |
3615 | +EOF |
3616 | +chmod 755 script-wrapper |
3617 | + |
3618 | +cat> ppa-key <<EOF |
3619 | +-----BEGIN PGP PUBLIC KEY BLOCK----- |
3620 | +Version: SKS 1.0.10 |
3621 | + |
3622 | +mI0ESXN/egEEAOgRYISU9dnQm4BB5ZEEwKT+NKUDNd/DhMYdtBMw9Yk7S5cyoqpbtwoPJVzK |
3623 | +AXxq+ng5e3yYypSv98pLMr5UF09FGaeyGlD4s1uaVFWkFCO4jsTg7pWIY6qzO/jMxB5+Yu/G |
3624 | +0GjWQMNKxFk0oHMa0PhNBZtdPacVz65mOVmCsh/lABEBAAG0G0xhdW5jaHBhZCBQUEEgZm9y |
3625 | +IExhbmRzY2FwZYi2BBMBAgAgBQJJc396AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ |
3626 | +boWobkZStOb+rwP+ONKUWeX+MTIPqGWkknBPV7jm8nyyIUojC4IhS+9YR6GYnn0hMABSkEHm |
3627 | +IV73feKmrT2GESYI1UdYeKiOkWsPN/JyBk+eTvKet0qsw5TluqiHSW+LEi/+zUyrS3dDMX3o |
3628 | +yaLgYa+UkjIyxnaKLkQuCiS+D+fYwnJulIkhaKObtdE= |
3629 | +=UwRd |
3630 | +-----END PGP PUBLIC KEY BLOCK----- |
3631 | +EOF |
3632 | + |
3633 | +cat > script <<EOF |
3634 | +#!/bin/sh -e |
3635 | +chown landscape /etc/landscape/client.conf |
3636 | +chmod 600 /etc/landscape/client.conf |
3637 | +apt-key add /root/ppa-key |
3638 | +echo "RUN=1" > /etc/default/landscape-client |
3639 | +EOF |
3640 | +chmod 755 script |
3641 | + |
3642 | +cat > manifest <<EOF |
3643 | +ppa-key /root |
3644 | +script /root/script |
3645 | +config /etc/landscape/client.conf |
3646 | +EOF |
3647 | + |
3648 | +if [ "$WITH_SSL" = "yes" ]; then |
3649 | + echo /etc/landscape/certs/sample_ca.crt /etc/landscape/client.conf.ssl_public_key >> manifest |
3650 | +fi |
3651 | + |
3652 | +cat > ssh <<EOF |
3653 | +#!/bin/sh |
3654 | +exec ssh -p $SSH_PORT -i $SSH_KEY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost |
3655 | +EOF |
3656 | +chmod 755 ssh |
3657 | + |
3658 | +cat > run <<EOF |
3659 | +#!/bin/sh |
3660 | +exec kvm --redir tcp:$SSH_PORT::22 -m 1280 -smp 1 -drive file=$TOPDIR/ubuntu-kvm/disk0.qcow2 "$@" |
3661 | +EOF |
3662 | +chmod 755 run |
3663 | + |
3664 | +ADDPKGS="--addpkg=landscape-client --addpkg=openssh-server" |
3665 | + |
3666 | +if [ "$PROFILE" = "server" ]; then |
3667 | + ADDPKGS="$ADDPKGS --addpkg apache2-mpm-prefork --addpkg postgresql --addpkg postfix" |
3668 | +else |
3669 | + ADDPKGS="$ADDPKGS --addpkg ubuntu-desktop" |
3670 | +fi |
3671 | + |
3672 | +if [ -n "$TMPDIR" ]; then |
3673 | + TEMP_DIR_OPT="-t $TMPDIR" |
3674 | +fi |
3675 | + |
3676 | +sudo ubuntu-vm-builder kvm "$RELEASE" --rootsize=$ROOTSIZE --mirror="$MIRROR" --ppa="$PPA" $ADDPKGS --execscript=./script-wrapper --copy=manifest --ssh-key=$SSH_KEY.pub $TEMP_DIR_OPT |
3677 | |
3678 | === added file 'dev/run-piuparts' |
3679 | --- dev/run-piuparts 1970-01-01 00:00:00 +0000 |
3680 | +++ dev/run-piuparts 2012-04-22 14:14:27 +0000 |
3681 | @@ -0,0 +1,154 @@ |
3682 | +#!/bin/sh -e |
3683 | + |
3684 | +help () { |
3685 | + cat <<EOF |
3686 | +$0 [OPTION]: run piuparts against landscape-client packages built from a branch |
3687 | + |
3688 | +The script checks if packaging changes (i.e. modifications to debian/ files) have |
3689 | +been introduced in the latest commit of the branch, and if so builds fresh |
3690 | +packages and run piuparts against them. |
3691 | + |
3692 | +The first time it's run, this script automatically creates a pbuilder chroot |
3693 | +for the same Ubuntu release the system is running. The chroot will be saved |
3694 | +under /var/cache/pbuilder and re-used in subsequent runs. |
3695 | + |
3696 | +The piuparts output will be available under build/piuparts/output.log. |
3697 | + |
3698 | +Available options: |
3699 | + |
3700 | + -m, --mirror <mirror> The Ubuntu mirror to use to build the pbuilder used |
3701 | + by piuparts chroot. |
3702 | + -f, --force Force running the tests, even if the debian/ directory |
3703 | + hasn't been changed in the last bzr commit. |
3704 | +EOF |
3705 | +} |
3706 | + |
3707 | +# |
3708 | +# Check if X is running, if not abort because we would make X crash (D-Bus!) |
3709 | +# |
3710 | +if pidof X > /dev/null; then |
3711 | + cat <<EOF |
3712 | +It appears you're running an X session. This script would kill your session |
3713 | +due to landscape-client reloading dbus in its postinst script. Quitting now. |
3714 | +EOF |
3715 | + exit 1 |
3716 | +fi |
3717 | + |
3718 | +# |
3719 | +# Check we have piuparts >= 0.36 |
3720 | +# |
3721 | +PIUPARTS_VERSION=$(sudo piuparts --version 2>/dev/null| cut -f 2 -d " ") |
3722 | +if ! dpkg --compare-versions $PIUPARTS_VERSION ge 0.36; then |
3723 | + cat <<EOF |
3724 | +You need piuparts 0.36 or higher |
3725 | +EOF |
3726 | + exit 1 |
3727 | +fi |
3728 | + |
3729 | +# |
3730 | +# Parse command line arguments |
3731 | +# |
3732 | +OPTS=$(getopt -o hm:f --long help,mirror:,force -- "$@") |
3733 | +if [ $? != 0 ]; then |
3734 | + exit 1 |
3735 | +fi |
3736 | +eval set -- "$OPTS" |
3737 | + |
3738 | +MIRROR=http://archive.ubuntu.com/ubuntu |
3739 | +FORCE=no |
3740 | + |
3741 | +while true ; do |
3742 | + case "$1" in |
3743 | + -h|--help) help; exit 1; shift ;; |
3744 | + -m|--mirror) MIRROR=$2; shift 2 ;; |
3745 | + -f|--force) FORCE=yes; shift 1 ;; |
3746 | + --) shift ; break ;; |
3747 | + *) echo "Internal error!" ; exit 1 ;; |
3748 | + esac |
3749 | +done |
3750 | + |
3751 | +# |
3752 | +# Check bzr changes under debian/ |
3753 | +# |
3754 | +if [ "${FORCE}" = "no" ]; then |
3755 | + if ! bzr diff -r revno:-1|diffstat -l|grep -q "^debian/.*"; then |
3756 | + echo "No packaging changes, skipping piuparts tests." |
3757 | + exit 0 |
3758 | + fi |
3759 | +fi |
3760 | + |
3761 | +# |
3762 | +# Export the sources |
3763 | +# |
3764 | +TOPDIR=$(pwd)/build/piuparts |
3765 | +RELEASE=$(lsb_release -cs) |
3766 | +SOURCE=$(dpkg-parsechangelog |grep "^Source:" | cut -f 2 -d " ") |
3767 | +VERSION=$(dpkg-parsechangelog |grep "^Version:" | cut -f 2 -d " ") |
3768 | +ARCH=$(dpkg --print-architecture) |
3769 | +rm -rf $TOPDIR |
3770 | +mkdir -p $TOPDIR |
3771 | +bzr export $TOPDIR/$SOURCE-$VERSION |
3772 | + |
3773 | +# |
3774 | +# Build the package |
3775 | +# |
3776 | +cd $TOPDIR/$SOURCE-$VERSION |
3777 | +dpkg-buildpackage -rfakeroot -b -uc -us |
3778 | +cd $TOPDIR |
3779 | + |
3780 | +BASETGZ=/var/cache/pbuilder/${SOURCE}-${RELEASE}-${ARCH}.tgz |
3781 | +if ! [ -e "$BASETGZ" ]; then |
3782 | + # Create the pbuilder chroot |
3783 | + COMPONENTS="main universe multiverse restricted" |
3784 | + OTHERMIRROR="deb ${MIRROR} ${RELEASE}-updates ${COMPONENTS}" |
3785 | + |
3786 | + if [ "${RELEASE}" = "hardy" ] || [ "${RELEASE}" = "dapper" ]; then |
3787 | + LANDSCAPE_REPO="deb http://landscape.canonical.com/packages/${RELEASE} ./" |
3788 | + OTHERMIRROR="${OTHERMIRROR} | ${LANDSCAPE_REPO}" |
3789 | + fi |
3790 | + |
3791 | + sudo pbuilder \ |
3792 | + --create \ |
3793 | + --distribution ${RELEASE} \ |
3794 | + --mirror ${MIRROR} \ |
3795 | + --components "${COMPONENTS}" \ |
3796 | + --othermirror "${OTHERMIRROR}" \ |
3797 | + --basetgz ${BASETGZ} |
3798 | +else |
3799 | + # Update the pbuilder chroot |
3800 | + sudo pbuilder \ |
3801 | + --update \ |
3802 | + --basetgz ${BASETGZ} |
3803 | +fi |
3804 | + |
3805 | +# |
3806 | +# Run piuparts |
3807 | +# |
3808 | + |
3809 | +# Workaround a bug in policykit not purging correctly |
3810 | +mkdir -p ${TOPDIR}/scripts/ |
3811 | +cat > ${TOPDIR}/scripts/post_purge_policy_kit <<EOF |
3812 | +#!/bin/sh |
3813 | +rm -rf /var/lib/PolicyKit/user-haldaemon.auths |
3814 | +EOF |
3815 | +chmod 755 ${TOPDIR}/scripts/post_purge_policy_kit |
3816 | + |
3817 | +sudo piuparts \ |
3818 | + --scriptsdir=${TOPDIR}/scripts/ \ |
3819 | + --keep-sources-list \ |
3820 | + --skip-minimize \ |
3821 | + --no-symlinks \ |
3822 | + -i /var/lib/PolicyKit \ |
3823 | + -i /etc/ssl \ |
3824 | + -I "/etc/udev.*" \ |
3825 | + -I "/lib/udev/.*" \ |
3826 | + -I "/var/lib/.*" \ |
3827 | + -I "/usr/lib/python2.6/dist-packages/twisted.*" \ |
3828 | + -i /etc/X11 \ |
3829 | + -i /etc/dbus-1 \ |
3830 | + -i /etc/dbus-1/system.d \ |
3831 | + -I "/usr/lib/python2.4/site-packages/apt.*" \ |
3832 | + -I "/usr/lib/python2.4/site-packages/dbus.*" \ |
3833 | + -I "/usr/lib/python2.5/site-packages/twisted.*" \ |
3834 | + -b ${BASETGZ} \ |
3835 | + ${SOURCE}_${VERSION}_${ARCH}.changes |
3836 | |
3837 | === added file 'dev/upload-to-ppa' |
3838 | --- dev/upload-to-ppa 1970-01-01 00:00:00 +0000 |
3839 | +++ dev/upload-to-ppa 2012-04-22 14:14:27 +0000 |
3840 | @@ -0,0 +1,123 @@ |
3841 | +#!/bin/sh -e |
3842 | + |
3843 | +help () { |
3844 | + cat <<EOF |
3845 | +Invoke this script from a $package bzr branch to build source packages for |
3846 | +all target distributions and upload them to a PPA. |
3847 | + |
3848 | +Options: |
3849 | + |
3850 | + -p=<PPA>|--ppa=<PPA> The PPA to upload to. This gets passed to dput, please |
3851 | + make sure you have a matching stanza in your ~/.dput.cf |
3852 | + |
3853 | + -k=<KEY>|--key=<KEY> The GPG key used to sign the packages |
3854 | + |
3855 | + -s|--snapshot Tweak the Debian revision by including the current bzr |
3856 | + revision number in it (e.g. 1.4.0~bzr178-0ubuntu0.8.04) |
3857 | + |
3858 | + -h|--help Print this help and exit |
3859 | + |
3860 | +EOF |
3861 | + exit |
3862 | +} |
3863 | + |
3864 | +# |
3865 | +# Check if we are in a bzr branch |
3866 | +# |
3867 | +if ! [ -d .bzr ] || ! [ -f debian/changelog ]; then |
3868 | + echo "Error: not in a package bzr branch" |
3869 | + echo |
3870 | + help |
3871 | +fi |
3872 | + |
3873 | +# |
3874 | +# Set defaults and parse command line arguments |
3875 | +# |
3876 | +ppa=landscape |
3877 | +key=free.ekanayaka@canonical.com |
3878 | +snapshot=no |
3879 | +package=$(dpkg-parsechangelog |grep ^Source|cut -f 2 -d " ") |
3880 | +version=$(dpkg-parsechangelog |grep ^Version|cut -f 2 -d " ") |
3881 | +upstream=$(echo $version | cut -f 1 -d "-") |
3882 | + |
3883 | +for i in $*; do |
3884 | + case $i in |
3885 | + -p=*|--ppa=*) |
3886 | + ppa=`echo $i | sed 's/[-a-zA-Z0-9]*=//'` |
3887 | + ;; |
3888 | + -k=*|--key=*) |
3889 | + key=`echo $i | sed 's/[-a-zA-Z0-9]*=//'` |
3890 | + ;; |
3891 | + -s|--snapshot) |
3892 | + snapshot=yes |
3893 | + ;; |
3894 | + -h|--help) |
3895 | + help |
3896 | + ;; |
3897 | + *) |
3898 | + echo "Error: unknown option $i" |
3899 | + echo |
3900 | + help |
3901 | + ;; |
3902 | + esac |
3903 | +done |
3904 | + |
3905 | +if [ "$snapshot" = "yes" ]; then |
3906 | + bzr_rev=$(bzr log -l 1|grep ^revno|cut -f 2 -d " ") |
3907 | + upstream="$upstream~bzr$bzr_rev" |
3908 | +fi |
3909 | + |
3910 | +# |
3911 | +# Clean up from possible previous runs |
3912 | +# |
3913 | +rm -fR ../${package}-* |
3914 | +rm -f ../${package}_* |
3915 | + |
3916 | +# |
3917 | +# Export the sources |
3918 | +# |
3919 | +bzr export ../${package}-${upstream} |
3920 | +cd .. |
3921 | +cp -a ${package}-${upstream} ${package}-${upstream}.orig |
3922 | +rm -R ${package}-${upstream}.orig/debian |
3923 | +cd ${package}-${upstream} |
3924 | + |
3925 | +# |
3926 | +# Build source packages and upload them |
3927 | +# |
3928 | +releases="hardy_8.04 karmic_9.10 lucid_10.04 maverick_10.10 natty_11.04 oneiric_11.10" |
3929 | + |
3930 | +if [ "$snapshot" = "yes" ]; then |
3931 | + # Snapshot, we'll add a dummy changelog entry like for all releases |
3932 | + source_opt="-sa" |
3933 | + releases="$releases natty_11.04" |
3934 | +else |
3935 | + # Actual release, use the latest changelog entry and upload now |
3936 | + dpkg-buildpackage -S -sa -k$key |
3937 | + dput $ppa ../${package}_${version}_source.changes |
3938 | + source_opt="-sd" |
3939 | +fi |
3940 | + |
3941 | +for release in $releases; do |
3942 | + |
3943 | + codename=$(echo $release|cut -f 1 -d _) |
3944 | + revision=0ubuntu0.$(echo $release|cut -f 2 -d _) |
3945 | + if ! [ "$snapshot" = "yes" ]; then |
3946 | + revision=${revision}.0~landscape1 |
3947 | + fi |
3948 | + version=$upstream-$revision |
3949 | + |
3950 | + if [ "$snapshot" = "yes" ]; then |
3951 | + message="Snapshot build for $codename" |
3952 | + else |
3953 | + message="Built for $codename, no source changes" |
3954 | + fi |
3955 | + cp debian/changelog ../ |
3956 | + dch --force-distribution -b -v $version -D $codename -m $message |
3957 | + dpkg-buildpackage -S $source_opt -k$key |
3958 | + dput $ppa ../${package}_${version}_source.changes |
3959 | + mv ../changelog debian |
3960 | + |
3961 | + source_opt="-sd" |
3962 | + |
3963 | +done |
3964 | |
3965 | === added directory 'glib-2.0' |
3966 | === renamed directory 'glib-2.0' => 'glib-2.0.moved' |
3967 | === added directory 'glib-2.0/schemas' |
3968 | === added file 'glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml' |
3969 | --- glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml 1970-01-01 00:00:00 +0000 |
3970 | +++ glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml 2012-04-22 14:14:27 +0000 |
3971 | @@ -0,0 +1,37 @@ |
3972 | +<?xml version="1.0" encoding="utf-8"?> |
3973 | +<schemalist> |
3974 | + <schema id="com.canonical.landscape-client-settings" path="/com/canonical/landscape-client-settings/"> |
3975 | + <key type="s" name="management-type"> |
3976 | + <default>"not"</default> |
3977 | + <summary>Whether the client settings UI currently set to a hosted client configuration, an LDS instance or no management service.</summary> |
3978 | + </key> |
3979 | + <key type="s" name="computer-title"> |
3980 | + <default>""</default> |
3981 | + <summary>The title to register the machine with.</summary> |
3982 | + </key> |
3983 | + <key type="s" name="hosted-landscape-host"> |
3984 | + <default>"landscape.canonical.com"</default> |
3985 | + <summary>The hostname of the Canonical hosted landscape system.</summary> |
3986 | + </key> |
3987 | + <key type="s" name="hosted-account-name"> |
3988 | + <default>""</default> |
3989 | + <summary>An account name for use with the Canonical hosted landscape system.</summary> |
3990 | + </key> |
3991 | + <key type="s" name="hosted-password"> |
3992 | + <default>""</default> |
3993 | + <summary>A password for use with the Canonical hosted landscape system</summary> |
3994 | + </key> |
3995 | + <key type="s" name="local-landscape-host"> |
3996 | + <default>""</default> |
3997 | + <summary>The hostname of the local landscape system.</summary> |
3998 | + </key> |
3999 | + <key type="s" name="local-account-name"> |
4000 | + <default>""</default> |
4001 | + <summary>An account name for use with the local landscape system.</summary> |
4002 | + </key> |
4003 | + <key type="s" name="local-password"> |
4004 | + <default>""</default> |
4005 | + <summary>A password for use with the local landscape system</summary> |
4006 | + </key> |
4007 | + </schema> |
4008 | +</schemalist> |
4009 | |
4010 | === added directory 'icons' |
4011 | === renamed directory 'icons' => 'icons.moved' |
4012 | === added file 'icons/preferences-management-service.svg' |
4013 | --- icons/preferences-management-service.svg 1970-01-01 00:00:00 +0000 |
4014 | +++ icons/preferences-management-service.svg 2012-04-22 14:14:27 +0000 |
4015 | @@ -0,0 +1,62 @@ |
4016 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
4017 | +<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In --> |
4018 | + |
4019 | +<svg |
4020 | + xmlns:dc="http://purl.org/dc/elements/1.1/" |
4021 | + xmlns:cc="http://creativecommons.org/ns#" |
4022 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
4023 | + xmlns:svg="http://www.w3.org/2000/svg" |
4024 | + xmlns="http://www.w3.org/2000/svg" |
4025 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
4026 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
4027 | + version="1.1" |
4028 | + x="0px" |
4029 | + y="0px" |
4030 | + width="32" |
4031 | + height="32" |
4032 | + viewBox="-0.787 -0.867 32 32" |
4033 | + enable-background="new -0.787 -0.867 285 285" |
4034 | + xml:space="preserve" |
4035 | + id="svg2" |
4036 | + inkscape:version="0.48.2 r9819" |
4037 | + sodipodi:docname="canonical_aubergine_hex.svg"><metadata |
4038 | + id="metadata12"><rdf:RDF><cc:Work |
4039 | + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type |
4040 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview |
4041 | + pagecolor="#ffffff" |
4042 | + bordercolor="#666666" |
4043 | + borderopacity="1" |
4044 | + objecttolerance="10" |
4045 | + gridtolerance="10" |
4046 | + guidetolerance="10" |
4047 | + inkscape:pageopacity="0" |
4048 | + inkscape:pageshadow="2" |
4049 | + inkscape:window-width="697" |
4050 | + inkscape:window-height="480" |
4051 | + id="namedview10" |
4052 | + showgrid="false" |
4053 | + fit-margin-top="0" |
4054 | + fit-margin-left="0" |
4055 | + fit-margin-right="0" |
4056 | + fit-margin-bottom="0" |
4057 | + inkscape:zoom="7.38" |
4058 | + inkscape:cx="15.9035" |
4059 | + inkscape:cy="16.176" |
4060 | + inkscape:window-x="449" |
4061 | + inkscape:window-y="100" |
4062 | + inkscape:window-maximized="0" |
4063 | + inkscape:current-layer="svg2" /> |
4064 | +<defs |
4065 | + id="defs4"> |
4066 | +</defs> |
4067 | +<path |
4068 | + d="m 15.21339,25.32101 c -5.62692,0 -10.18809,-4.55982 -10.18809,-10.18812 0,-5.62706 4.56117,-10.18768 10.18809,-10.18768 5.62705,0 10.18798,4.56062 10.18798,10.18768 0,5.6283 -4.56082,10.18812 -10.18798,10.18812 z" |
4069 | + id="path6" |
4070 | + inkscape:connector-curvature="0" |
4071 | + style="fill:#772953" /> |
4072 | +<path |
4073 | + d="M 31.213,15.13334 C 31.213,23.96956 24.04959,31.133 15.21294,31.133 6.37607,31.133 -0.787,23.96945 -0.787,15.13334 -0.787,6.29621 6.37607,-0.867 15.21306,-0.867 24.04959,-0.867 31.213,6.29621 31.213,15.13334 z M 15.21306,3.025 c -6.68751,0 -12.10774,5.42115 -12.10774,12.10823 0,6.68809 5.42023,12.10755 12.10774,12.10755 6.68773,0 12.10796,-5.41946 12.10796,-12.10755 C 27.32102,8.44615 21.90079,3.025 15.21306,3.025 z" |
4074 | + id="path8" |
4075 | + inkscape:connector-curvature="0" |
4076 | + style="fill:#772953" /> |
4077 | +</svg> |
4078 | \ No newline at end of file |
4079 | |
4080 | === added directory 'landscape' |
4081 | === added file 'landscape-client.conf' |
4082 | --- landscape-client.conf 1970-01-01 00:00:00 +0000 |
4083 | +++ landscape-client.conf 2012-04-22 14:14:27 +0000 |
4084 | @@ -0,0 +1,12 @@ |
4085 | +[client] |
4086 | +bus = session |
4087 | +computer_title = John's PC |
4088 | +account_name = onward |
4089 | +registration_password = |
4090 | +url = http://localhost:8080/message-system |
4091 | +data_path = /tmp/landscape/ |
4092 | +log_dir = /tmp/landscape/ |
4093 | +log_level = debug |
4094 | +pid_file = /tmp/landscape/landscape-client.pid |
4095 | +ping_url = http://localhost:8081/ping |
4096 | + |
4097 | |
4098 | === renamed file 'landscape-client.conf' => 'landscape-client.conf.moved' |
4099 | === renamed directory 'landscape' => 'landscape.moved' |
4100 | === added file 'landscape/__init__.py' |
4101 | --- landscape/__init__.py 1970-01-01 00:00:00 +0000 |
4102 | +++ landscape/__init__.py 2012-04-22 14:14:27 +0000 |
4103 | @@ -0,0 +1,57 @@ |
4104 | +import sys |
4105 | + |
4106 | +DEBIAN_REVISION = "" |
4107 | +UPSTREAM_VERSION = "12.04.2" |
4108 | +VERSION = "%s%s" % (UPSTREAM_VERSION, DEBIAN_REVISION) |
4109 | + |
4110 | +# The "server-api" field of outgoing messages will be set to this value, and |
4111 | +# used by the server message system to lookup the correct MessageAPI adapter |
4112 | +# for handling the messages sent by the client. Bump it when the schema of any |
4113 | +# of the messages sent by the client changes in a backward-incompatible way. |
4114 | +# |
4115 | +# Changelog: |
4116 | +# |
4117 | +# 3.2: |
4118 | +# * Add new "eucalyptus-info" and "eucalyptus-info-error" messages. |
4119 | +# |
4120 | +SERVER_API = "3.2" |
4121 | + |
4122 | +# XXX This is needed for backward compatibility in the server code importing |
4123 | +# the API variable. We should eventually replace it in the server code. |
4124 | +API = SERVER_API |
4125 | + |
4126 | +# The "client-api" field of outgoing messages will be set to this value, and |
4127 | +# used by the server to know which schema do the message types accepted by the |
4128 | +# client support. Bump it when the schema of an accepted message type changes |
4129 | +# and update the changelog below as needed. |
4130 | +# |
4131 | +# Changelog: |
4132 | +# |
4133 | +# 3.3: |
4134 | +# * Add "binaries" field to "change-packages" |
4135 | +# * Add "policy" field to "change-packages" |
4136 | +# * Add new "change-package-locks" client accepted message type. |
4137 | +# |
4138 | +CLIENT_API = "3.3" |
4139 | + |
4140 | +from twisted.python import util |
4141 | + |
4142 | + |
4143 | +def initgroups(uid, gid): |
4144 | + """Initializes the group access list. |
4145 | + |
4146 | + It replaces the default implementation of Twisted which iterates other all |
4147 | + groups, using the system call C{initgroups} instead. This wrapper just |
4148 | + translates the numeric C{uid} to a user name understood by C{initgroups}. |
4149 | + """ |
4150 | + import pwd |
4151 | + from landscape.lib.initgroups import initgroups as cinitgroups |
4152 | + return cinitgroups(pwd.getpwuid(uid).pw_name, gid) |
4153 | + |
4154 | + |
4155 | +if "twisted.python._initgroups" not in sys.modules: |
4156 | + # Patch twisted initgroups implementation, which can result in very long |
4157 | + # calls to grp.getrlall(). See http://twistedmatrix.com/trac/ticket/3226 |
4158 | + # We can remove that bit when Lucid is our oldest supported version |
4159 | + # (May 2013). |
4160 | + util.initgroups = initgroups |
4161 | |
4162 | === added file 'landscape/accumulate.py' |
4163 | --- landscape/accumulate.py 1970-01-01 00:00:00 +0000 |
4164 | +++ landscape/accumulate.py 2012-04-22 14:14:27 +0000 |
4165 | @@ -0,0 +1,112 @@ |
4166 | +""" |
4167 | +The accumulation logic generates data points for times that are a |
4168 | +multiple of a step size. In other words, if the step size is 300 |
4169 | +seconds, any data reported by the accumulation code will always be for |
4170 | +a timestamp that is a multiple of 300. The purpose of this behaviour |
4171 | +is to (a) limit the amount of data that is sent to the server and (b) |
4172 | +provide data in a predictable format to make server-side handling of |
4173 | +the data straight-forward. A nice side-effect of providing data at a |
4174 | +known step-interval is that the server can detect blackholes in the |
4175 | +data simply by testing for the absence of data points at step |
4176 | +intervals. |
4177 | + |
4178 | +Limiting the amount of data sent to the server and making the data |
4179 | +format predictable are both desirable attributes, but we need to |
4180 | +ensure the data reported is accurate. We can't rely on plugins to |
4181 | +report data exactly at step boundaries and even if we could we |
4182 | +wouldn't necessarily end up with data points that are representative |
4183 | +of the resource being monitored. We need a way to calculate a |
4184 | +representative data point from the set of data points that a plugin |
4185 | +provided during a step period. |
4186 | + |
4187 | +Suppose we want to calculate data points for timestamps 300 and 600. |
4188 | +Assume a plugin runs at an interval less than 300 seconds to get |
4189 | +values to provide to the accumulator. Each value received by the |
4190 | +accumulator is used to update a data point that will be sent to the |
4191 | +server when we cross the step boundary. The algorithm, based on |
4192 | +derivatives, is: |
4193 | + |
4194 | + (current time - previous time) * value + last accumulated value |
4195 | + |
4196 | +If the 'last accumulated value' isn't available, it defaults to 0. |
4197 | +For example, consider these timestamp/load average measurements: |
4198 | +300/2.0, 375/3.0, 550/3.5 and 650/0.5. Also assume we have no data |
4199 | +prior to 300/2.0. This data would be processed as follows: |
4200 | + |
4201 | + Input Calculation Accumulated Value |
4202 | + ----- ----------- ----------------- |
4203 | + 300/2.0 (300 - 300) * 2.0 + 0 0.0 |
4204 | + |
4205 | + 375/3.0 (375 - 300) * 3.0 + 0.0 225.0 |
4206 | + |
4207 | + 550/3.5 (550 - 375) * 3.5 + 225.0 837.5 |
4208 | + |
4209 | + 650/0.5 (600 - 550) * 0.5 + 837.5 862.5 |
4210 | + |
4211 | +Notice that the last value crosses a step boundary; the calculation |
4212 | +for this value is: |
4213 | + |
4214 | + (step boundary time - previous time) * value + last accumulated value |
4215 | + |
4216 | +This yields the final accumulated value for the step period we've just |
4217 | +traversed. The data point sent to the server is generated using the |
4218 | +following calculation: |
4219 | + |
4220 | + accumulated value / step interval size |
4221 | + |
4222 | +The data point sent to the server in our example would be: |
4223 | + |
4224 | + 862.5 / 300 = 2.875 |
4225 | + |
4226 | +This value is representative of the activity that actually occurred |
4227 | +and is returned to the plugin to queue for delivery to the server. |
4228 | +The accumulated value for the next interval is calculated using the |
4229 | +portion of time that crossed into the new step period: |
4230 | + |
4231 | + Input Calculation Accumulated Value |
4232 | + ----- ----------- ----------------- |
4233 | + 650/0.5 (650 - 600) * 0.5 + 0 25 |
4234 | + |
4235 | +And so the logic goes, continuing in a similar fashion, yielding |
4236 | +representative data at each step boundary. |
4237 | +""" |
4238 | + |
4239 | +class Accumulator(object): |
4240 | + |
4241 | + def __init__(self, persist, step_size): |
4242 | + self._persist = persist |
4243 | + self._step_size = step_size |
4244 | + |
4245 | + def __call__(self, new_timestamp, new_free_space, key): |
4246 | + previous_timestamp, accumulated_value = self._persist.get(key, (0, 0)) |
4247 | + accumulated_value, step_data = \ |
4248 | + accumulate(previous_timestamp, accumulated_value, |
4249 | + new_timestamp, new_free_space, self._step_size) |
4250 | + self._persist.set(key, (new_timestamp, accumulated_value)) |
4251 | + return step_data |
4252 | + |
4253 | + |
4254 | +def accumulate(previous_timestamp, accumulated_value, |
4255 | + new_timestamp, new_value, |
4256 | + step_size): |
4257 | + previous_step = previous_timestamp // step_size |
4258 | + new_step = new_timestamp // step_size |
4259 | + step_boundary = new_step * step_size |
4260 | + step_diff = new_step - previous_step |
4261 | + step_data = None |
4262 | + |
4263 | + if step_diff == 0: |
4264 | + diff = new_timestamp - previous_timestamp |
4265 | + accumulated_value += diff * new_value |
4266 | + elif step_diff == 1: |
4267 | + diff = step_boundary - previous_timestamp |
4268 | + accumulated_value += diff * new_value |
4269 | + step_value = float(accumulated_value) / step_size |
4270 | + step_data = (step_boundary, step_value) |
4271 | + diff = new_timestamp - step_boundary |
4272 | + accumulated_value = diff * new_value |
4273 | + else: |
4274 | + diff = new_timestamp - step_boundary |
4275 | + accumulated_value = diff * new_value |
4276 | + |
4277 | + return accumulated_value, step_data |
4278 | |
4279 | === added file 'landscape/amp.py' |
4280 | --- landscape/amp.py 1970-01-01 00:00:00 +0000 |
4281 | +++ landscape/amp.py 2012-04-22 14:14:27 +0000 |
4282 | @@ -0,0 +1,107 @@ |
4283 | +import os |
4284 | +import logging |
4285 | + |
4286 | +from landscape.lib.amp import ( |
4287 | + MethodCallProtocol, MethodCallFactory, RemoteObjectConnector) |
4288 | + |
4289 | + |
4290 | +class ComponentProtocol(MethodCallProtocol): |
4291 | + """Communication protocol between the various Landscape components. |
4292 | + |
4293 | + It can be used both as server-side protocol for exposing the methods of a |
4294 | + certain Landscape component, or as client-side protocol for connecting to |
4295 | + another Landscape component we want to call the methods of. |
4296 | + """ |
4297 | + methods = ["ping", "exit"] |
4298 | + timeout = 60 |
4299 | + |
4300 | + |
4301 | +class ComponentProtocolFactory(MethodCallFactory): |
4302 | + |
4303 | + protocol = ComponentProtocol |
4304 | + initialDelay = 0.05 |
4305 | + |
4306 | + |
4307 | +class RemoteComponentConnector(RemoteObjectConnector): |
4308 | + """Utility superclass for creating connections with a Landscape component. |
4309 | + |
4310 | + @cvar component: The class of the component to connect to, it is expected |
4311 | + to define a C{name} class attribute, which will be used to find out |
4312 | + the socket to use. It must be defined by sub-classes. |
4313 | + |
4314 | + @param reactor: A L{TwistedReactor} object. |
4315 | + @param config: A L{LandscapeConfiguration}. |
4316 | + @param args: Positional arguments for protocol factory constructor. |
4317 | + @param kwargs: Keyword arguments for protocol factory constructor. |
4318 | + |
4319 | + @see: L{MethodCallClientFactory}. |
4320 | + """ |
4321 | + |
4322 | + factory = ComponentProtocolFactory |
4323 | + |
4324 | + def __init__(self, reactor, config, *args, **kwargs): |
4325 | + self._twisted_reactor = reactor |
4326 | + socket = os.path.join(config.sockets_path, |
4327 | + self.component.name + ".sock") |
4328 | + super(RemoteComponentConnector, self).__init__( |
4329 | + self._twisted_reactor._reactor, socket, *args, **kwargs) |
4330 | + |
4331 | + def connect(self, max_retries=None, factor=None, quiet=False): |
4332 | + """Connect to the remote Landscape component. |
4333 | + |
4334 | + If the connection is lost after having been established, and then |
4335 | + it is established again by the reconnect mechanism, an event will |
4336 | + be fired. |
4337 | + |
4338 | + @param max_retries: If given, the connector will keep trying to connect |
4339 | + up to that number of times, if the first connection attempt fails. |
4340 | + @param factor: Optionally a float indicating by which factor the |
4341 | + delay between subsequent retries should increase. Smaller values |
4342 | + result in a faster reconnection attempts pace. |
4343 | + @param quiet: A boolean indicating whether to log errors. |
4344 | + """ |
4345 | + |
4346 | + def fire_reconnect(remote): |
4347 | + self._twisted_reactor.fire("%s-reconnect" % |
4348 | + self.component.name) |
4349 | + |
4350 | + def connected(remote): |
4351 | + self._factory.add_notifier(fire_reconnect) |
4352 | + return remote |
4353 | + |
4354 | + def log_error(failure): |
4355 | + logging.error("Error while connecting to %s", self.component.name) |
4356 | + return failure |
4357 | + |
4358 | + result = super(RemoteComponentConnector, self).connect( |
4359 | + max_retries=max_retries, factor=factor) |
4360 | + if not quiet: |
4361 | + result.addErrback(log_error) |
4362 | + result.addCallback(connected) |
4363 | + return result |
4364 | + |
4365 | + |
4366 | +class RemoteComponentsRegistry(object): |
4367 | + """ |
4368 | + A global registry for looking up Landscape component connectors by name. |
4369 | + """ |
4370 | + |
4371 | + _by_name = {} |
4372 | + |
4373 | + @classmethod |
4374 | + def get(cls, name): |
4375 | + """Get the connector class for the given Landscape component. |
4376 | + |
4377 | + @param name: Name of the Landscape component we want to connect to, for |
4378 | + instance C{monitor} or C{manager}. |
4379 | + """ |
4380 | + return cls._by_name[name] |
4381 | + |
4382 | + @classmethod |
4383 | + def register(cls, connector_class): |
4384 | + """Register a connector for a Landscape component. |
4385 | + |
4386 | + @param connector_class: A sub-class of L{RemoteComponentConnector} |
4387 | + that can be used to connect to a certain component. |
4388 | + """ |
4389 | + cls._by_name[connector_class.component.name] = connector_class |
4390 | |
4391 | === added directory 'landscape/broker' |
4392 | === added file 'landscape/broker/__init__.py' |
4393 | --- landscape/broker/__init__.py 1970-01-01 00:00:00 +0000 |
4394 | +++ landscape/broker/__init__.py 2012-04-22 14:14:27 +0000 |
4395 | @@ -0,0 +1,3 @@ |
4396 | +""" |
4397 | +The broker mediates communication with client components to the server. |
4398 | +""" |
4399 | |
4400 | === added file 'landscape/broker/amp.py' |
4401 | --- landscape/broker/amp.py 1970-01-01 00:00:00 +0000 |
4402 | +++ landscape/broker/amp.py 2012-04-22 14:14:27 +0000 |
4403 | @@ -0,0 +1,142 @@ |
4404 | +from twisted.internet.defer import maybeDeferred, execute, succeed |
4405 | + |
4406 | +from landscape.lib.amp import RemoteObject |
4407 | +from landscape.amp import ( |
4408 | + ComponentProtocol, ComponentProtocolFactory, RemoteComponentConnector, |
4409 | + RemoteComponentsRegistry) |
4410 | +from landscape.broker.server import BrokerServer |
4411 | +from landscape.broker.client import BrokerClient |
4412 | +from landscape.monitor.monitor import Monitor |
4413 | +from landscape.manager.manager import Manager |
4414 | + |
4415 | + |
4416 | +class BrokerServerProtocol(ComponentProtocol): |
4417 | + """ |
4418 | + Communication protocol between the broker server and its clients. |
4419 | + """ |
4420 | + methods = (ComponentProtocol.methods + |
4421 | + ["fire_event", |
4422 | + "get_accepted_message_types", |
4423 | + "get_server_uuid", |
4424 | + "is_message_pending", |
4425 | + "register", |
4426 | + "register_client", |
4427 | + "register_client_accepted_message_type", |
4428 | + "reload_configuration", |
4429 | + "send_message", |
4430 | + "stop_clients", |
4431 | + "listen_events"]) |
4432 | + |
4433 | + |
4434 | +class BrokerServerProtocolFactory(ComponentProtocolFactory): |
4435 | + |
4436 | + protocol = BrokerServerProtocol |
4437 | + |
4438 | + |
4439 | +class RemoteBroker(RemoteObject): |
4440 | + |
4441 | + def call_if_accepted(self, type, callable, *args): |
4442 | + """Call C{callable} if C{type} is an accepted message type.""" |
4443 | + deferred_types = self.get_accepted_message_types() |
4444 | + |
4445 | + def got_accepted_types(result): |
4446 | + if type in result: |
4447 | + return callable(*args) |
4448 | + deferred_types.addCallback(got_accepted_types) |
4449 | + return deferred_types |
4450 | + |
4451 | + def call_on_event(self, handlers): |
4452 | + """Call a given handler as soon as a certain event occurs. |
4453 | + |
4454 | + @param handlers: A dictionary mapping event types to callables, where |
4455 | + an event type is string (the name of the event). When the first of |
4456 | + the given event types occurs in the broker reactor, the associated |
4457 | + callable will be fired. |
4458 | + """ |
4459 | + result = self.listen_events(handlers.keys()) |
4460 | + return result.addCallback(lambda event_type: handlers[event_type]()) |
4461 | + |
4462 | + |
4463 | +class FakeRemoteBroker(object): |
4464 | + """Looks like L{RemoteBroker}, but actually talks to local objects.""" |
4465 | + |
4466 | + def __init__(self, exchanger, message_store): |
4467 | + self.exchanger = exchanger |
4468 | + self.message_store = message_store |
4469 | + self.protocol = BrokerServerProtocol() |
4470 | + |
4471 | + def ping(self): |
4472 | + return succeed(True) |
4473 | + |
4474 | + def call_if_accepted(self, type, callable, *args): |
4475 | + if type in self.message_store.get_accepted_types(): |
4476 | + return maybeDeferred(callable, *args) |
4477 | + return succeed(None) |
4478 | + |
4479 | + def send_message(self, message, urgent=False): |
4480 | + """Send to the previously given L{MessageExchange} object.""" |
4481 | + |
4482 | + # Check that the message to be sent is serializable over AMP |
4483 | + from landscape.lib.amp import MethodCallArgument |
4484 | + assert(MethodCallArgument.check(message)) |
4485 | + |
4486 | + return execute(self.exchanger.send, message, urgent=urgent) |
4487 | + |
4488 | + def register_client_accepted_message_type(self, type): |
4489 | + return execute(self.exchanger.register_client_accepted_message_type, |
4490 | + type) |
4491 | + |
4492 | + def get_accepted_message_types(self): |
4493 | + """ |
4494 | + Return a deferred resulting in the list of message types accepted |
4495 | + by the Landscape server. |
4496 | + """ |
4497 | + return execute(self.message_store.get_accepted_types) |
4498 | + |
4499 | + |
4500 | +class BrokerClientProtocol(ComponentProtocol): |
4501 | + """Communication protocol between a client and the broker.""" |
4502 | + |
4503 | + methods = (ComponentProtocol.methods + ["fire_event", "message"]) |
4504 | + |
4505 | + |
4506 | +class BrokerClientProtocolFactory(ComponentProtocolFactory): |
4507 | + |
4508 | + protocol = BrokerClientProtocol |
4509 | + |
4510 | + |
4511 | +class RemoteClient(RemoteObject): |
4512 | + """A remote L{BrokerClient} connected to a L{BrokerServer}.""" |
4513 | + |
4514 | + |
4515 | +class RemoteBrokerConnector(RemoteComponentConnector): |
4516 | + """Helper to create connections with the L{BrokerServer}.""" |
4517 | + |
4518 | + factory = BrokerClientProtocolFactory |
4519 | + remote = RemoteBroker |
4520 | + component = BrokerServer |
4521 | + |
4522 | + |
4523 | +class RemoteClientConnector(RemoteComponentConnector): |
4524 | + """Helper to create connections with the L{BrokerServer}.""" |
4525 | + |
4526 | + factory = BrokerServerProtocolFactory |
4527 | + remote = RemoteClient |
4528 | + component = BrokerClient |
4529 | + |
4530 | + |
4531 | +class RemoteMonitorConnector(RemoteClientConnector): |
4532 | + """Helper to create connections with the L{Monitor}.""" |
4533 | + |
4534 | + component = Monitor |
4535 | + |
4536 | + |
4537 | +class RemoteManagerConnector(RemoteClientConnector): |
4538 | + """Helper for creating connections with the L{Monitor}.""" |
4539 | + |
4540 | + component = Manager |
4541 | + |
4542 | +RemoteComponentsRegistry.register(RemoteBrokerConnector) |
4543 | +RemoteComponentsRegistry.register(RemoteClientConnector) |
4544 | +RemoteComponentsRegistry.register(RemoteMonitorConnector) |
4545 | +RemoteComponentsRegistry.register(RemoteManagerConnector) |
4546 | |
4547 | === added file 'landscape/broker/client.py' |
4548 | --- landscape/broker/client.py 1970-01-01 00:00:00 +0000 |
4549 | +++ landscape/broker/client.py 2012-04-22 14:14:27 +0000 |
4550 | @@ -0,0 +1,200 @@ |
4551 | +from logging import info, exception |
4552 | + |
4553 | +from twisted.internet.defer import maybeDeferred |
4554 | + |
4555 | +from landscape.log import format_object |
4556 | +from landscape.lib.twisted_util import gather_results |
4557 | + |
4558 | + |
4559 | +class HandlerNotFoundError(Exception): |
4560 | + """A handler for the given message type was not found.""" |
4561 | + |
4562 | + |
4563 | +class BrokerClientPlugin(object): |
4564 | + """A convenience for writing L{BrokerClient} plugins. |
4565 | + |
4566 | + This provides a register method which will set up a bunch of |
4567 | + reactor handlers in the idiomatic way. |
4568 | + |
4569 | + If C{run} is defined on subclasses, it will be called every C{run_interval} |
4570 | + seconds after being registered. |
4571 | + |
4572 | + @cvar run_interval: The interval, in seconds, to execute the C{run} method. |
4573 | + If set to C{None}, then C{run} will not be scheduled. |
4574 | + @cvar run_immediately: If C{True} the plugin will be run immediately after |
4575 | + it is registered. |
4576 | + """ |
4577 | + |
4578 | + run_interval = 5 |
4579 | + run_immediately = False |
4580 | + |
4581 | + def register(self, client): |
4582 | + self.client = client |
4583 | + if getattr(self, "run", None) is not None: |
4584 | + if self.run_immediately: |
4585 | + self.run() |
4586 | + if self.run_interval is not None: |
4587 | + self.client.reactor.call_every(self.run_interval, self.run) |
4588 | + |
4589 | + @property |
4590 | + def registry(self): |
4591 | + """An alias for the C{client} attribute.""" |
4592 | + return self.client |
4593 | + |
4594 | + def call_on_accepted(self, type, callable, *args, **kwargs): |
4595 | + """ |
4596 | + Register a callback fired upon a C{message-type-acceptance-changed}. |
4597 | + """ |
4598 | + |
4599 | + def acceptance_changed(acceptance): |
4600 | + if acceptance: |
4601 | + return callable(*args, **kwargs) |
4602 | + |
4603 | + self.client.reactor.call_on(("message-type-acceptance-changed", type), |
4604 | + acceptance_changed) |
4605 | + |
4606 | + |
4607 | +class BrokerClient(object): |
4608 | + """Basic plugin registry for clients that have to deal with the broker. |
4609 | + |
4610 | + This knows about the needs of a client when dealing with the Landscape |
4611 | + broker, including interest in messages of a particular type delivered |
4612 | + by the broker to the client. |
4613 | + |
4614 | + @cvar name: The name used when registering to the broker, it must be |
4615 | + defined by sub-classes. |
4616 | + @ivar broker: A reference to a connected L{RemoteBroker}, it must be set |
4617 | + by the connecting machinery at service startup. |
4618 | + |
4619 | + @param reactor: A L{TwistedReactor}. |
4620 | + """ |
4621 | + name = "client" |
4622 | + |
4623 | + def __init__(self, reactor): |
4624 | + super(BrokerClient, self).__init__() |
4625 | + self.reactor = reactor |
4626 | + self.broker = None |
4627 | + self._registered_messages = {} |
4628 | + self._plugins = [] |
4629 | + self._plugin_names = {} |
4630 | + |
4631 | + # Register event handlers |
4632 | + self.reactor.call_on("impending-exchange", self.notify_exchange) |
4633 | + self.reactor.call_on("broker-reconnect", self.handle_reconnect) |
4634 | + |
4635 | + def ping(self): |
4636 | + """Return C{True}""" |
4637 | + return True |
4638 | + |
4639 | + def add(self, plugin): |
4640 | + """Add a plugin. |
4641 | + |
4642 | + The plugin's C{register} method will be called with this broker client |
4643 | + as its argument. |
4644 | + |
4645 | + If the plugin has a C{plugin_name} attribute, it will be possible to |
4646 | + look up the plugin later with L{get_plugin}. |
4647 | + """ |
4648 | + info("Registering plugin %s.", format_object(plugin)) |
4649 | + self._plugins.append(plugin) |
4650 | + if hasattr(plugin, 'plugin_name'): |
4651 | + self._plugin_names[plugin.plugin_name] = plugin |
4652 | + plugin.register(self) |
4653 | + |
4654 | + def get_plugins(self): |
4655 | + """Get the list of plugins.""" |
4656 | + return self._plugins[:] |
4657 | + |
4658 | + def get_plugin(self, name): |
4659 | + """Get a particular plugin by name.""" |
4660 | + return self._plugin_names[name] |
4661 | + |
4662 | + def register_message(self, type, handler): |
4663 | + """ |
4664 | + Register interest in a particular type of Landscape server->client |
4665 | + message. |
4666 | + |
4667 | + @param type: The type of message to register C{handler} for. |
4668 | + @param handler: A callable taking a message as a parameter, called |
4669 | + when messages of C{type} are received. |
4670 | + @return: A C{Deferred} that will fire when registration completes. |
4671 | + """ |
4672 | + self._registered_messages[type] = handler |
4673 | + return self.broker.register_client_accepted_message_type(type) |
4674 | + |
4675 | + def dispatch_message(self, message): |
4676 | + """Run the handler registered for the type of the given message. |
4677 | + |
4678 | + @return: The return value of the handler, if found. |
4679 | + @raises: HandlerNotFoundError if the handler was not found |
4680 | + """ |
4681 | + type = message["type"] |
4682 | + handler = self._registered_messages.get(type) |
4683 | + if handler is None: |
4684 | + raise HandlerNotFoundError(type) |
4685 | + try: |
4686 | + return handler(message) |
4687 | + except: |
4688 | + exception("Error running message handler for type %r: %r" |
4689 | + % (type, handler)) |
4690 | + |
4691 | + def message(self, message): |
4692 | + """Call C{dispatch_message} for the given C{message}. |
4693 | + |
4694 | + @return: A boolean indicating if a handler for the message was found. |
4695 | + """ |
4696 | + try: |
4697 | + self.dispatch_message(message) |
4698 | + return True |
4699 | + except HandlerNotFoundError: |
4700 | + return False |
4701 | + |
4702 | + def exchange(self): |
4703 | + """Call C{exchange} on all plugins.""" |
4704 | + for plugin in self.get_plugins(): |
4705 | + if hasattr(plugin, "exchange"): |
4706 | + try: |
4707 | + plugin.exchange() |
4708 | + except: |
4709 | + exception("Error during plugin exchange") |
4710 | + |
4711 | + def notify_exchange(self): |
4712 | + """Notify all plugins about an impending exchange.""" |
4713 | + info("Got notification of impending exchange. Notifying all plugins.") |
4714 | + self.exchange() |
4715 | + |
4716 | + def fire_event(self, event_type, *args, **kwargs): |
4717 | + """Fire an event of a given type. |
4718 | + |
4719 | + @return: A L{Deferred} resulting in a list of returns values of |
4720 | + the fired event handlers, in the order they were fired. |
4721 | + """ |
4722 | + if event_type == "message-type-acceptance-changed": |
4723 | + message_type = args[0] |
4724 | + acceptance = args[1] |
4725 | + results = self.reactor.fire((event_type, message_type), acceptance) |
4726 | + else: |
4727 | + results = self.reactor.fire(event_type, *args, **kwargs) |
4728 | + return gather_results([ |
4729 | + maybeDeferred(lambda x: x, result) for result in results]) |
4730 | + |
4731 | + def handle_reconnect(self): |
4732 | + """Called when the connection with the broker is established again. |
4733 | + |
4734 | + The following needs to be done: |
4735 | + |
4736 | + - Re-register any previously registered message types, so the broker |
4737 | + knows we have interest on them. |
4738 | + |
4739 | + - Re-register ourselves as client, so the broker knows we exist and |
4740 | + will talk to us firing events and dispatching messages. |
4741 | + """ |
4742 | + for type in self._registered_messages: |
4743 | + self.broker.register_client_accepted_message_type(type) |
4744 | + self.broker.register_client(self.name) |
4745 | + |
4746 | + def exit(self): |
4747 | + """Stop the reactor and exit the process.""" |
4748 | + # Stop with a short delay to give a chance to reply to the |
4749 | + # caller over AMP. |
4750 | + self.reactor.call_later(0.1, self.reactor.stop) |
4751 | |
4752 | === added file 'landscape/broker/config.py' |
4753 | --- landscape/broker/config.py 1970-01-01 00:00:00 +0000 |
4754 | +++ landscape/broker/config.py 2012-04-22 14:14:27 +0000 |
4755 | @@ -0,0 +1,98 @@ |
4756 | +"""Configuration class for the broker.""" |
4757 | + |
4758 | +import os |
4759 | + |
4760 | +from landscape.deployment import Configuration |
4761 | + |
4762 | + |
4763 | +class BrokerConfiguration(Configuration): |
4764 | + """Specialized configuration for the Landscape Broker. |
4765 | + |
4766 | + @cvar required_options: C{["url"]} |
4767 | + """ |
4768 | + |
4769 | + def __init__(self): |
4770 | + super(BrokerConfiguration, self).__init__() |
4771 | + self._original_http_proxy = os.environ.get("http_proxy") |
4772 | + self._original_https_proxy = os.environ.get("https_proxy") |
4773 | + |
4774 | + @property |
4775 | + def exchange_store_path(self): |
4776 | + return os.path.join(self.data_path, "exchange.database") |
4777 | + |
4778 | + def make_parser(self): |
4779 | + """Parser factory for broker-specific options. |
4780 | + |
4781 | + @return: An L{OptionParser} preset for all the options |
4782 | + from L{Configuration.make_parser} plus: |
4783 | + - C{account_name} |
4784 | + - C{registration_password} |
4785 | + - C{computer_title} |
4786 | + - C{exchange_interval} (C{15*60}) |
4787 | + - C{urgent_exchange_interval} (C{1*60}) |
4788 | + - C{http_proxy} |
4789 | + - C{https_proxy} |
4790 | + - C{cloud} |
4791 | + - C{otp} |
4792 | + - C{provisioning_otp} |
4793 | + """ |
4794 | + parser = super(BrokerConfiguration, self).make_parser() |
4795 | + |
4796 | + parser.add_option("-a", "--account-name", metavar="NAME", |
4797 | + help="The account this computer belongs to.") |
4798 | + parser.add_option("-p", "--registration-password", metavar="PASSWORD", |
4799 | + help="The account-wide password used for " |
4800 | + "registering clients.") |
4801 | + parser.add_option("-t", "--computer-title", metavar="TITLE", |
4802 | + help="The title of this computer") |
4803 | + parser.add_option("--exchange-interval", default=15 * 60, type="int", |
4804 | + metavar="INTERVAL", |
4805 | + help="The number of seconds between server " |
4806 | + "exchanges.") |
4807 | + parser.add_option("--urgent-exchange-interval", default=1 * 60, |
4808 | + type="int", metavar="INTERVAL", |
4809 | + help="The number of seconds between urgent server " |
4810 | + "exchanges.") |
4811 | + parser.add_option("--ping-interval", default=30, type="int", |
4812 | + metavar="INTERVAL", |
4813 | + help="The number of seconds between pings.") |
4814 | + parser.add_option("--http-proxy", metavar="URL", |
4815 | + help="The URL of the HTTP proxy, if one is needed.") |
4816 | + parser.add_option("--https-proxy", metavar="URL", |
4817 | + help="The URL of the HTTPS proxy, if one is needed.") |
4818 | + parser.add_option("--cloud", action="store_true", |
4819 | + help="Set this if your computer is in an EC2 cloud.") |
4820 | + parser.add_option("--otp", default="", |
4821 | + help="The OTP to use in cloud configuration.") |
4822 | + parser.add_option("--tags", |
4823 | + help="Comma separated list of tag names to be sent " |
4824 | + "to the server.") |
4825 | + parser.add_option("--provisioning-otp", default="", |
4826 | + help="The OTP to use for a provisioned machine.") |
4827 | + |
4828 | + return parser |
4829 | + |
4830 | + @property |
4831 | + def message_store_path(self): |
4832 | + """Get the path to the message store.""" |
4833 | + return os.path.join(self.data_path, "messages") |
4834 | + |
4835 | + def load(self, args, accept_nonexistent_config=False): |
4836 | + """ |
4837 | + Load options from command line arguments and a config file. |
4838 | + |
4839 | + Load the configuration with L{Configuration.load}, and then set |
4840 | + C{http_proxy} and C{https_proxy} environment variables based on |
4841 | + that config data. |
4842 | + """ |
4843 | + super(BrokerConfiguration, self).load( |
4844 | + args, accept_nonexistent_config=accept_nonexistent_config) |
4845 | + if self.http_proxy: |
4846 | + os.environ["http_proxy"] = self.http_proxy |
4847 | + elif self._original_http_proxy: |
4848 | + os.environ["http_proxy"] = self._original_http_proxy |
4849 | + |
4850 | + if self.https_proxy: |
4851 | + os.environ["https_proxy"] = self.https_proxy |
4852 | + elif self._original_https_proxy: |
4853 | + os.environ["https_proxy"] = self._original_https_proxy |
4854 | |
4855 | === added file 'landscape/broker/exchange.py' |
4856 | --- landscape/broker/exchange.py 1970-01-01 00:00:00 +0000 |
4857 | +++ landscape/broker/exchange.py 2012-04-22 14:14:27 +0000 |
4858 | @@ -0,0 +1,436 @@ |
4859 | +"""The part of the broker which deals with communications with the server.""" |
4860 | +import time |
4861 | +import logging |
4862 | +from landscape.lib.hashlib import md5 |
4863 | + |
4864 | +from twisted.internet.defer import succeed |
4865 | + |
4866 | +from landscape.lib.message import got_next_expected, ANCIENT |
4867 | +from landscape.log import format_delta |
4868 | +from landscape import SERVER_API, CLIENT_API |
4869 | + |
4870 | + |
4871 | +class MessageExchange(object): |
4872 | + """ |
4873 | + The Message Exchange is the place where messages are sent to go |
4874 | + out to the Landscape server. |
4875 | + |
4876 | + The Message Exchange will accumulate messages in its message store |
4877 | + and periodically deliver them to the server. |
4878 | + """ |
4879 | + |
4880 | + plugin_name = "message-exchange" |
4881 | + |
4882 | + def __init__(self, reactor, store, transport, registration_info, |
4883 | + exchange_store, |
4884 | + config, |
4885 | + monitor_interval=None, |
4886 | + max_messages=100, |
4887 | + create_time=time.time): |
4888 | + """ |
4889 | + @param reactor: A L{TwistedReactor} used to fire events in response |
4890 | + to messages received by the server. |
4891 | + @param store: A L{MessageStore} used to queue outgoing messages. |
4892 | + @param transport: A L{HTTPTransport} used to deliver messages. |
4893 | + @param exchange_interval: time interval between subsequent |
4894 | + exchanges of non-urgent messages. |
4895 | + @param urgent_exchange_interval: time interval between subsequent |
4896 | + exchanges of urgent messages. |
4897 | + """ |
4898 | + self._reactor = reactor |
4899 | + self._message_store = store |
4900 | + self._create_time = create_time |
4901 | + self._transport = transport |
4902 | + self._registration_info = registration_info |
4903 | + self._config = config |
4904 | + self._exchange_interval = config.exchange_interval |
4905 | + self._urgent_exchange_interval = config.urgent_exchange_interval |
4906 | + self._max_messages = max_messages |
4907 | + self._notification_id = None |
4908 | + self._exchange_id = None |
4909 | + self._exchanging = False |
4910 | + self._urgent_exchange = False |
4911 | + self._client_accepted_types = set() |
4912 | + self._client_accepted_types_hash = None |
4913 | + self._message_handlers = {} |
4914 | + self._exchange_store = exchange_store |
4915 | + |
4916 | + self.register_message("accepted-types", self._handle_accepted_types) |
4917 | + self.register_message("resynchronize", self._handle_resynchronize) |
4918 | + self.register_message("set-intervals", self._handle_set_intervals) |
4919 | + reactor.call_on("resynchronize-clients", self._resynchronize) |
4920 | + reactor.call_on("pre-exit", self.stop) |
4921 | + |
4922 | + def get_exchange_intervals(self): |
4923 | + """Return a binary tuple with urgent and normal exchange intervals.""" |
4924 | + return (self._urgent_exchange_interval, self._exchange_interval) |
4925 | + |
4926 | + def _message_is_obsolete(self, message): |
4927 | + """Returns C{True} if message is obsolete. |
4928 | + |
4929 | + A message is considered obsolete if the secure ID changed since it was |
4930 | + received. |
4931 | + """ |
4932 | + if 'operation-id' not in message: |
4933 | + return False |
4934 | + |
4935 | + operation_id = message['operation-id'] |
4936 | + context = self._exchange_store.get_message_context(operation_id) |
4937 | + if context is None: |
4938 | + logging.warning( |
4939 | + "No message context for message with operation-id: %s" |
4940 | + % operation_id) |
4941 | + return False |
4942 | + |
4943 | + # Compare the current secure ID with the one that was in effect when |
4944 | + # the request message was received. |
4945 | + result = self._registration_info.secure_id != context.secure_id |
4946 | + context.remove() |
4947 | + |
4948 | + return result |
4949 | + |
4950 | + def send(self, message, urgent=False): |
4951 | + """Include a message to be sent in an exchange. |
4952 | + |
4953 | + If urgent is True, an exchange with the server will be |
4954 | + scheduled urgently. |
4955 | + |
4956 | + @param message: Same as in L{MessageStore.add}. |
4957 | + """ |
4958 | + if self._message_is_obsolete(message): |
4959 | + logging.info( |
4960 | + "Response message with operation-id %s was discarded " |
4961 | + "because the client's secure ID has changed in the meantime" |
4962 | + % message.get('operation-id')) |
4963 | + return None |
4964 | + |
4965 | + if "timestamp" not in message: |
4966 | + message["timestamp"] = int(self._reactor.time()) |
4967 | + message_id = self._message_store.add(message) |
4968 | + if urgent: |
4969 | + self.schedule_exchange(urgent=True) |
4970 | + return message_id |
4971 | + |
4972 | + def start(self): |
4973 | + """Start scheduling exchanges. The first one will be urgent.""" |
4974 | + self.schedule_exchange(urgent=True) |
4975 | + |
4976 | + def stop(self): |
4977 | + if self._exchange_id is not None: |
4978 | + self._reactor.cancel_call(self._exchange_id) |
4979 | + self._exchange_id = None |
4980 | + if self._notification_id is not None: |
4981 | + self._reactor.cancel_call(self._notification_id) |
4982 | + self._notification_id = None |
4983 | + |
4984 | + def _handle_accepted_types(self, message): |
4985 | + """ |
4986 | + When the server updates us about the types of message it |
4987 | + accepts, update our message store. |
4988 | + |
4989 | + If this makes existing held messages available for sending, |
4990 | + urgently exchange messages. |
4991 | + |
4992 | + If new types are made available or old types are dropped a |
4993 | + C{("message-type-acceptance-changed", type, bool)} reactor |
4994 | + event will be fired. |
4995 | + """ |
4996 | + old_types = set(self._message_store.get_accepted_types()) |
4997 | + new_types = set(message["types"]) |
4998 | + diff = get_accepted_types_diff(old_types, new_types) |
4999 | + self._message_store.set_accepted_types(new_types) |
5000 | + logging.info("Accepted types changed: %s", diff) |
The diff has been truncated for viewing.
Thanks, the typo has been fixed.