Merge lp:~vibhavp/landscape-client/landscape-client-typo.fix into lp:~landscape/landscape-client/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
Reviewer Review Type Date Requested Status
Landscape Pending
Review via email: mp+103011@code.launchpad.net

Description of the change

Fixes Typo

To post a comment you must log in.
Revision history for this message
Thomas Herve (therve) wrote :

Thanks, the typo has been fixed.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'LICENSE'
--- LICENSE 1970-01-01 00:00:00 +0000
+++ LICENSE 2012-04-22 14:14:27 +0000
@@ -0,0 +1,340 @@
1 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12freedom to share and change it. By contrast, the GNU General Public
13License is intended to guarantee your freedom to share and change free
14software--to make sure the software is free for all its users. This
15General Public License applies to most of the Free Software
16Foundation's software and to any other program whose authors commit to
17using it. (Some other Free Software Foundation software is covered by
18the GNU Library General Public License instead.) You can apply it to
19your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22price. Our General Public Licenses are designed to make sure that you
23have the freedom to distribute copies of free software (and charge for
24this service if you wish), that you receive source code or can get it
25if you want it, that you can change the software or use pieces of it
26in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29anyone to deny you these rights or to ask you to surrender the rights.
30These restrictions translate to certain responsibilities for you if you
31distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34gratis or for a fee, you must give the recipients all the rights that
35you have. You must make sure that they, too, receive or can get the
36source code. And you must show them these terms so they know their
37rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40(2) offer you this license which gives you legal permission to copy,
41distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44that everyone understands that there is no warranty for this free
45software. If the software is modified by someone else and passed on, we
46want its recipients to know that what they have is not the original, so
47that any problems introduced by others will not reflect on the original
48authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51patents. We wish to avoid the danger that redistributors of a free
52program will individually obtain patent licenses, in effect making the
53program proprietary. To prevent this, we have made it clear that any
54patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57modification follow.
58
059
60 GNU GENERAL PUBLIC LICENSE
61 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
62
63 0. This License applies to any program or other work which contains
64a notice placed by the copyright holder saying it may be distributed
65under the terms of this General Public License. The "Program", below,
66refers to any such program or work, and a "work based on the Program"
67means either the Program or any derivative work under copyright law:
68that is to say, a work containing the Program or a portion of it,
69either verbatim or with modifications and/or translated into another
70language. (Hereinafter, translation is included without limitation in
71the term "modification".) Each licensee is addressed as "you".
72
73Activities other than copying, distribution and modification are not
74covered by this License; they are outside its scope. The act of
75running the Program is not restricted, and the output from the Program
76is covered only if its contents constitute a work based on the
77Program (independent of having been made by running the Program).
78Whether that is true depends on what the Program does.
79
80 1. You may copy and distribute verbatim copies of the Program's
81source code as you receive it, in any medium, provided that you
82conspicuously and appropriately publish on each copy an appropriate
83copyright notice and disclaimer of warranty; keep intact all the
84notices that refer to this License and to the absence of any warranty;
85and give any other recipients of the Program a copy of this License
86along with the Program.
87
88You may charge a fee for the physical act of transferring a copy, and
89you may at your option offer warranty protection in exchange for a fee.
90
91 2. You may modify your copy or copies of the Program or any portion
92of it, thus forming a work based on the Program, and copy and
93distribute such modifications or work under the terms of Section 1
94above, provided that you also meet all of these conditions:
95
96 a) You must cause the modified files to carry prominent notices
97 stating that you changed the files and the date of any change.
98
99 b) You must cause any work that you distribute or publish, that in
100 whole or in part contains or is derived from the Program or any
101 part thereof, to be licensed as a whole at no charge to all third
102 parties under the terms of this License.
103
104 c) If the modified program normally reads commands interactively
105 when run, you must cause it, when started running for such
106 interactive use in the most ordinary way, to print or display an
107 announcement including an appropriate copyright notice and a
108 notice that there is no warranty (or else, saying that you provide
109 a warranty) and that users may redistribute the program under
110 these conditions, and telling the user how to view a copy of this
111 License. (Exception: if the Program itself is interactive but
112 does not normally print such an announcement, your work based on
113 the Program is not required to print an announcement.)
114
1115
116These requirements apply to the modified work as a whole. If
117identifiable sections of that work are not derived from the Program,
118and can be reasonably considered independent and separate works in
119themselves, then this License, and its terms, do not apply to those
120sections when you distribute them as separate works. But when you
121distribute the same sections as part of a whole which is a work based
122on the Program, the distribution of the whole must be on the terms of
123this License, whose permissions for other licensees extend to the
124entire whole, and thus to each and every part regardless of who wrote it.
125
126Thus, it is not the intent of this section to claim rights or contest
127your rights to work written entirely by you; rather, the intent is to
128exercise the right to control the distribution of derivative or
129collective works based on the Program.
130
131In addition, mere aggregation of another work not based on the Program
132with the Program (or with a work based on the Program) on a volume of
133a storage or distribution medium does not bring the other work under
134the scope of this License.
135
136 3. You may copy and distribute the Program (or a work based on it,
137under Section 2) in object code or executable form under the terms of
138Sections 1 and 2 above provided that you also do one of the following:
139
140 a) Accompany it with the complete corresponding machine-readable
141 source code, which must be distributed under the terms of Sections
142 1 and 2 above on a medium customarily used for software interchange; or,
143
144 b) Accompany it with a written offer, valid for at least three
145 years, to give any third party, for a charge no more than your
146 cost of physically performing source distribution, a complete
147 machine-readable copy of the corresponding source code, to be
148 distributed under the terms of Sections 1 and 2 above on a medium
149 customarily used for software interchange; or,
150
151 c) Accompany it with the information you received as to the offer
152 to distribute corresponding source code. (This alternative is
153 allowed only for noncommercial distribution and only if you
154 received the program in object code or executable form with such
155 an offer, in accord with Subsection b above.)
156
157The source code for a work means the preferred form of the work for
158making modifications to it. For an executable work, complete source
159code means all the source code for all modules it contains, plus any
160associated interface definition files, plus the scripts used to
161control compilation and installation of the executable. However, as a
162special exception, the source code distributed need not include
163anything that is normally distributed (in either source or binary
164form) with the major components (compiler, kernel, and so on) of the
165operating system on which the executable runs, unless that component
166itself accompanies the executable.
167
168If distribution of executable or object code is made by offering
169access to copy from a designated place, then offering equivalent
170access to copy the source code from the same place counts as
171distribution of the source code, even though third parties are not
172compelled to copy the source along with the object code.
173
2174
175 4. You may not copy, modify, sublicense, or distribute the Program
176except as expressly provided under this License. Any attempt
177otherwise to copy, modify, sublicense or distribute the Program is
178void, and will automatically terminate your rights under this License.
179However, parties who have received copies, or rights, from you under
180this License will not have their licenses terminated so long as such
181parties remain in full compliance.
182
183 5. You are not required to accept this License, since you have not
184signed it. However, nothing else grants you permission to modify or
185distribute the Program or its derivative works. These actions are
186prohibited by law if you do not accept this License. Therefore, by
187modifying or distributing the Program (or any work based on the
188Program), you indicate your acceptance of this License to do so, and
189all its terms and conditions for copying, distributing or modifying
190the Program or works based on it.
191
192 6. Each time you redistribute the Program (or any work based on the
193Program), the recipient automatically receives a license from the
194original licensor to copy, distribute or modify the Program subject to
195these terms and conditions. You may not impose any further
196restrictions on the recipients' exercise of the rights granted herein.
197You are not responsible for enforcing compliance by third parties to
198this License.
199
200 7. If, as a consequence of a court judgment or allegation of patent
201infringement or for any other reason (not limited to patent issues),
202conditions are imposed on you (whether by court order, agreement or
203otherwise) that contradict the conditions of this License, they do not
204excuse you from the conditions of this License. If you cannot
205distribute so as to satisfy simultaneously your obligations under this
206License and any other pertinent obligations, then as a consequence you
207may not distribute the Program at all. For example, if a patent
208license would not permit royalty-free redistribution of the Program by
209all those who receive copies directly or indirectly through you, then
210the only way you could satisfy both it and this License would be to
211refrain entirely from distribution of the Program.
212
213If any portion of this section is held invalid or unenforceable under
214any particular circumstance, the balance of the section is intended to
215apply and the section as a whole is intended to apply in other
216circumstances.
217
218It is not the purpose of this section to induce you to infringe any
219patents or other property right claims or to contest validity of any
220such claims; this section has the sole purpose of protecting the
221integrity of the free software distribution system, which is
222implemented by public license practices. Many people have made
223generous contributions to the wide range of software distributed
224through that system in reliance on consistent application of that
225system; it is up to the author/donor to decide if he or she is willing
226to distribute software through any other system and a licensee cannot
227impose that choice.
228
229This section is intended to make thoroughly clear what is believed to
230be a consequence of the rest of this License.
231
3232
233 8. If the distribution and/or use of the Program is restricted in
234certain countries either by patents or by copyrighted interfaces, the
235original copyright holder who places the Program under this License
236may add an explicit geographical distribution limitation excluding
237those countries, so that distribution is permitted only in or among
238countries not thus excluded. In such case, this License incorporates
239the limitation as if written in the body of this License.
240
241 9. The Free Software Foundation may publish revised and/or new versions
242of the General Public License from time to time. Such new versions will
243be similar in spirit to the present version, but may differ in detail to
244address new problems or concerns.
245
246Each version is given a distinguishing version number. If the Program
247specifies a version number of this License which applies to it and "any
248later version", you have the option of following the terms and conditions
249either of that version or of any later version published by the Free
250Software Foundation. If the Program does not specify a version number of
251this License, you may choose any version ever published by the Free Software
252Foundation.
253
254 10. If you wish to incorporate parts of the Program into other free
255programs whose distribution conditions are different, write to the author
256to ask for permission. For software which is copyrighted by the Free
257Software Foundation, write to the Free Software Foundation; we sometimes
258make exceptions for this. Our decision will be guided by the two goals
259of preserving the free status of all derivatives of our free software and
260of promoting the sharing and reuse of software generally.
261
262 NO WARRANTY
263
264 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
265FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
266OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
267PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
268OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
269MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
270TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
271PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
272REPAIR OR CORRECTION.
273
274 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
275WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
276REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
277INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
278OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
279TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
280YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
281PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
282POSSIBILITY OF SUCH DAMAGES.
283
284 END OF TERMS AND CONDITIONS
285
4286
287 How to Apply These Terms to Your New Programs
288
289 If you develop a new program, and you want it to be of the greatest
290possible use to the public, the best way to achieve this is to make it
291free software which everyone can redistribute and change under these terms.
292
293 To do so, attach the following notices to the program. It is safest
294to attach them to the start of each source file to most effectively
295convey the exclusion of warranty; and each file should have at least
296the "copyright" line and a pointer to where the full notice is found.
297
298 <one line to give the program's name and a brief idea of what it does.>
299 Copyright (C) <year> <name of author>
300
301 This program is free software; you can redistribute it and/or modify
302 it under the terms of the GNU General Public License as published by
303 the Free Software Foundation; either version 2 of the License, or
304 (at your option) any later version.
305
306 This program is distributed in the hope that it will be useful,
307 but WITHOUT ANY WARRANTY; without even the implied warranty of
308 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
309 GNU General Public License for more details.
310
311 You should have received a copy of the GNU General Public License
312 along with this program; if not, write to the Free Software
313 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
314
315
316Also add information on how to contact you by electronic and paper mail.
317
318If the program is interactive, make it output a short notice like this
319when it starts in an interactive mode:
320
321 Gnomovision version 69, Copyright (C) year name of author
322 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
323 This is free software, and you are welcome to redistribute it
324 under certain conditions; type `show c' for details.
325
326The hypothetical commands `show w' and `show c' should show the appropriate
327parts of the General Public License. Of course, the commands you use may
328be called something other than `show w' and `show c'; they could even be
329mouse-clicks or menu items--whatever suits your program.
330
331You should also get your employer (if you work as a programmer) or your
332school, if any, to sign a "copyright disclaimer" for the program, if
333necessary. Here is a sample; alter the names:
334
335 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
336 `Gnomovision' (which makes passes at compilers) written by James Hacker.
337
338 <signature of Ty Coon>, 1 April 1989
339 Ty Coon, President of Vice
340
341This General Public License does not permit incorporating your program into
342proprietary programs. If your program is a subroutine library, you may
343consider it more useful to permit linking proprietary applications with the
344library. If this is what you want to do, use the GNU Library General
345Public License instead of this License.
5346
=== renamed file 'LICENSE' => 'LICENSE.moved'
=== added file 'Makefile'
--- Makefile 1970-01-01 00:00:00 +0000
+++ Makefile 2012-04-22 14:14:27 +0000
@@ -0,0 +1,113 @@
1PYDOCTOR ?= pydoctor
2TXT2MAN ?= txt2man
3PYTHON ?= python
4TRIAL_ARGS ?=
5TEST_COMMAND = trial $(TRIAL_ARGS) landscape
6
7all: build
8
9build:
10 $(PYTHON) setup.py build_ext -i
11
12check: build
13 @if [ -z "$$DBUS_SESSION_BUS_ADDRESS" ]; then \
14 OUTPUT=`dbus-daemon --print-address=1 --print-pid=1 --session --fork`; \
15 export DBUS_SESSION_BUS_ADDRESS=`echo $$OUTPUT | cut -f1 -d ' '`; \
16 DBUS_PID=`echo $$OUTPUT | cut -f2 -d ' '`; \
17 trap "kill $$DBUS_PID" EXIT; \
18 fi; \
19 if [ -z "$$DISPLAY" ]; then \
20 xvfb-run $(TEST_COMMAND); \
21 else \
22 $(TEST_COMMAND); \
23 fi
24
25lint:
26 bzr ls-lint
27
28pyflakes:
29 -pyflakes `find landscape -name \*py|grep -v twisted_amp\.py|grep -v configobj\.py|grep -v mocker\.py`
30
31checkcertificate:
32 -echo | openssl s_client -connect landscape.canonical.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt
33
34clean:
35 -find landscape -name \*.pyc -exec rm {} \;
36 -rm tags
37 -rm _trial_temp -rf
38 -rm docs/api -rf;
39 -rm man/\*.1 -rf
40 -rm sdist -rf
41
42doc: docs/api/twisted/pickle
43 mkdir -p docs/api
44 ${PYDOCTOR} --make-html --html-output docs/api --add-package landscape --extra-system=docs/api/twisted/pickle:twisted/
45
46docs/api/twisted/pickle:
47 mkdir -p docs/api/twisted
48 -${PYDOCTOR} --make-html --html-output docs/api/twisted --add-package /usr/share/pyshared/twisted -o docs/api/twisted/pickle
49
50manpages:
51 ${TXT2MAN} -P Landscape -s 1 -t landscape-client < man/landscape-client.txt > man/landscape-client.1
52 ${TXT2MAN} -P Landscape -s 1 -t landscape-config < man/landscape-config.txt > man/landscape-config.1
53 ${TXT2MAN} -P Landscape -s 1 -t landscape-message < man/landscape-message.txt > man/landscape-message.1
54
55package: manpages
56 @fakeroot debian/rules binary
57 @echo "\n\nYou remembered to update the changelog, right?\n\n"
58
59SSH_USERNAME=`whoami`
60SSH_HOST=people.ubuntu.com
61PACKAGE_DIR=/home/jkakar/public_html/landscape
62deploy:
63ifneq (${PACKAGE},)
64 @echo "Copying ${PACKAGE} to $(SSH_HOST):$(PACKAGE_DIR)"
65 @scp ${PACKAGE} $(SSH_USERNAME)@$(SSH_HOST):$(PACKAGE_DIR)
66 @echo "\nScanning packages and recreating the Packages file."
67 @ssh -l $(SSH_USERNAME) $(SSH_HOST) \
68 "cd $(PACKAGE_DIR) " \
69 "&& dpkg-scanpackages . /dev/null > Packages " \
70 "&& gzip -f Packages"
71else
72 @echo "You need to specify PACKAGE, as in: make deploy PACKAGE=<name>"
73endif
74
75MESSAGE_DIR = `pwd`/runclient-messages
76LOG_FILE = `pwd`/runclient.log
77
78reinstall:
79 -sudo dpkg -P landscape-client
80 -sudo rm -rf /var/log/landscape /etc/landscape /var/lib/landscape /etc/default/landscape-client
81 -sudo apt-get install landscape-client
82
83freshdata:
84 -sudo rm -rf $(MESSAGE_DIR)
85 -sudo mkdir $(MESSAGE_DIR)
86
87run:
88 -sudo ./landscape-client \
89 -a onward -t "John's PC" \
90 -u http://localhost:8080/message-system \
91 -d $(MESSAGE_DIR) \
92 --urgent-exchange-interval=5 \
93 --log-level=debug \
94 --ping-url=http://localhost:8081/ping \
95
96freshrun: freshdata run
97
98tags:
99 -ctags --languages=python -R .
100
101etags:
102 -etags --languages=python -R .
103
104UPSTREAM_VERSION=$(shell python -c "from landscape import UPSTREAM_VERSION; print UPSTREAM_VERSION")
105sdist:
106 mkdir -p sdist
107 bzr export sdist/landscape-client-$(UPSTREAM_VERSION)
108 rm -rf sdist/landscape-client-$(UPSTREAM_VERSION)/debian
109 cd sdist && tar cfz landscape-client-$(UPSTREAM_VERSION).tar.gz landscape-client-$(UPSTREAM_VERSION)
110 cd sdist && md5sum landscape-client-$(UPSTREAM_VERSION).tar.gz > landscape-client-$(UPSTREAM_VERSION).tar.gz.md5
111 rm -rf sdist/landscape-client-$(UPSTREAM_VERSION)
112
113.PHONY: tags etags
0114
=== renamed file 'Makefile' => 'Makefile.moved'
=== added file 'README'
--- README 1970-01-01 00:00:00 +0000
+++ README 2012-04-22 14:14:27 +0000
@@ -0,0 +1,46 @@
1== Non-root mode ==
2
3The Landscape Client generally runs as a combination of the 'root' and
4'landscape' users. It is possible to disable the administrative features of
5Landscape and run only the monitoring parts of it without using the 'root'
6user at all.
7
8If you wish to use the Landscape Client in this way, it's recommended that you
9perform these steps immediately after installing the landscape-client package.
10
11Edit /etc/default/landscape-client and add the following lines:
12
13 RUN=1
14 DAEMON_USER=landscape
15
16Edit /etc/landscape/client.conf and add the following line:
17
18 monitor_only = true
19
20Now you can run 'sudo landscape-config' as usual to complete the configuration
21of your client and register with the Landscape service.
22
23
24== Developing ==
25
26To run the full test suite, you must have a dbus session bus
27running. If you don't have one (for example, if you're running the
28tests in an ssh session), run the following command:
29
30export DBUS_SESSION_BUS_ADDRESS=`dbus-daemon --print-address=1 --session --fork`
31
32Then your tests should pass.
33
34When you want to test the landscape client manually without management
35features, you can simply run:
36
37$ ./scripts/landscape-client
38
39This defaults to the 'landscape-client.conf' configuration file.
40
41When you want to test management features manually, you'll need to run as root.
42There's a configuration file 'root-client.conf' which specifies use of the
43system bus.
44
45$ sudo ./scripts/landscape-client -c root-client.conf
46
047
=== renamed file 'README' => 'README.moved'
=== added directory 'applications'
=== renamed directory 'applications' => 'applications.moved'
=== added file 'applications/landscape-client-settings.desktop.in'
--- applications/landscape-client-settings.desktop.in 1970-01-01 00:00:00 +0000
+++ applications/landscape-client-settings.desktop.in 2012-04-22 14:14:27 +0000
@@ -0,0 +1,17 @@
1[Desktop Entry]
2_Name=Management Service
3_Comment=Management Service Preferences
4Exec=landscape-client-ui-install
5Icon=preferences-management-service
6Terminal=False
7Type=Application
8StartupNotify=true
9Categories=GNOME;GTK;Settings;X-GNOME-SystemSettings;X-GNOME-Settings-Panel;
10OnlyShowIn=GNOME;Unity;
11X-GNOME-Bugzilla-Bugzilla=GNOME
12X-GNOME-Bugzilla-Product=gnome-control-center
13X-GNOME-Bugzilla-Component=sample
14X-GNOME-Bugzilla-Version=1.0.0
15X-GNOME-Settings-Panel=sample
16X-GNOME-Keywords=device;system;information;memory;processor;version;default;application;fallback;preferred;
17X-Ubuntu-Gettext-Domain=landscape-client
018
=== added directory 'apt-update'
=== renamed directory 'apt-update' => 'apt-update.moved'
=== added file 'apt-update/Makefile'
--- apt-update/Makefile 1970-01-01 00:00:00 +0000
+++ apt-update/Makefile 2012-04-22 14:14:27 +0000
@@ -0,0 +1,7 @@
1NAME = apt-update
2
3$(NAME): $(NAME).c
4 $(CC) $(CFLAGS) -Wall $< -o $@
5
6clean:
7 rm -f $(NAME)
08
=== added file 'apt-update/apt-update.c'
--- apt-update/apt-update.c 1970-01-01 00:00:00 +0000
+++ apt-update/apt-update.c 2012-04-22 14:14:27 +0000
@@ -0,0 +1,81 @@
1/*
2
3 Copyright (c) 2011 Canonical, Ltd.
4
5*/
6
7#define _GNU_SOURCE
8#include <sys/resource.h>
9#include <sys/types.h>
10#include <sys/stat.h>
11#include <grp.h>
12#include <unistd.h>
13#include <stdlib.h>
14#include <string.h>
15#include <errno.h>
16#include <stdio.h>
17#include <pwd.h>
18
19int main(int argc, char *argv[], char *envp[])
20{
21 char *apt_argv[] = {"/usr/bin/apt-get", "-q", "update", NULL};
22 char *apt_envp[] = {"PATH=/bin:/usr/bin", NULL, NULL};
23
24 // Set the HOME environment variable
25 struct passwd *pwd = getpwuid(geteuid());
26 if (!pwd) {
27 fprintf(stderr, "error: Unable to find passwd entry for uid %d (%s)\n",
28 geteuid(), strerror(errno));
29 exit(1);
30 }
31 if (asprintf(&apt_envp[1], "HOME=%s", pwd->pw_dir) == -1) {
32 perror("error: Unable to create HOME environment variable");
33 exit(1);
34 }
35
36 // Drop any supplementary group
37 if (setgroups(0, NULL) == -1) {
38 perror("error: Unable to set supplementary groups IDs");
39 exit(1);
40 }
41
42 // Set real/effective gid and uid
43 if (setregid(pwd->pw_gid, pwd->pw_gid) == -1) {
44 fprintf(stderr, "error: Unable to set real and effective gid (%s)\n",
45 strerror(errno));
46 exit(1);
47 }
48 if (setreuid(pwd->pw_uid, pwd->pw_uid) == -1) {
49 perror("error: Unable to set real and effective uid");
50 exit(1);
51 }
52
53 // Close all file descriptors except the standard ones
54 struct rlimit rlp;
55 if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) {
56 perror("error: Unable to determine file descriptor limits");
57 exit(1);
58 }
59 int file_max;
60 if (rlp.rlim_max == RLIM_INFINITY || rlp.rlim_max > 4096)
61 file_max = 4096;
62 else
63 file_max = rlp.rlim_max;
64 int file;
65 for (file = 3; file < file_max; file++) {
66 close(file);
67 }
68
69 // Set umask to 022
70 umask(S_IWGRP | S_IWOTH);
71
72 if (chdir("/") == -1) {
73 perror("error: Unable to change working directory");
74 exit(1);
75 }
76
77 // Run apt-get update
78 execve(apt_argv[0], apt_argv, apt_envp);
79 perror("error: Unable to execute apt-get");
80 return 1;
81}
082
=== added directory 'dbus'
=== added directory 'dbus-1'
=== renamed directory 'dbus-1' => 'dbus-1.moved'
=== added file 'dbus-1/com.canonical.LandscapeClientRegistration.conf'
--- dbus-1/com.canonical.LandscapeClientRegistration.conf 1970-01-01 00:00:00 +0000
+++ dbus-1/com.canonical.LandscapeClientRegistration.conf 2012-04-22 14:14:27 +0000
@@ -0,0 +1,16 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
3"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
4<busconfig>
5 <type>system</type>
6 <policy user="root">
7 <allow own="com.canonical.LandscapeClientRegistration"/>
8 <allow send_destination="com.canonical.LandscapeClientRegistration"/>
9 <allow send_interface="com.canonical.LandscapeClientRegistration"/>
10 </policy>
11
12 <policy context="default">
13 <allow send_destination="com.canonical.LandscapeClientRegistration"/>
14 <allow send_interface="com.canonical.LandscapeClientRegistration"/>
15 </policy>
16</busconfig>
017
=== added file 'dbus-1/com.canonical.LandscapeClientRegistration.service'
--- dbus-1/com.canonical.LandscapeClientRegistration.service 1970-01-01 00:00:00 +0000
+++ dbus-1/com.canonical.LandscapeClientRegistration.service 2012-04-22 14:14:27 +0000
@@ -0,0 +1,4 @@
1[D-BUS Service]
2Name=com.canonical.LandscapeClientRegistration
3Exec=/usr/bin/landscape-client-registration-mechanism
4User=root
0\ No newline at end of file5\ No newline at end of file
16
=== added file 'dbus-1/com.canonical.LandscapeClientSettings.conf'
--- dbus-1/com.canonical.LandscapeClientSettings.conf 1970-01-01 00:00:00 +0000
+++ dbus-1/com.canonical.LandscapeClientSettings.conf 2012-04-22 14:14:27 +0000
@@ -0,0 +1,16 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
3"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
4<busconfig>
5 <type>system</type>
6 <policy user="root">
7 <allow own="com.canonical.LandscapeClientSettings"/>
8 <allow send_destination="com.canonical.LandscapeClientSettings"/>
9 <allow send_interface="com.canonical.LandscapeClientSettings"/>
10 </policy>
11
12 <policy context="default">
13 <allow send_destination="com.canonical.LandscapeClientSettings"/>
14 <allow send_interface="com.canonical.LandscapeClientSettings"/>
15 </policy>
16</busconfig>
017
=== added file 'dbus-1/com.canonical.LandscapeClientSettings.service'
--- dbus-1/com.canonical.LandscapeClientSettings.service 1970-01-01 00:00:00 +0000
+++ dbus-1/com.canonical.LandscapeClientSettings.service 2012-04-22 14:14:27 +0000
@@ -0,0 +1,4 @@
1[D-BUS Service]
2Name=com.canonical.LandscapeClientSettings
3Exec=/usr/bin/landscape-client-settings-mechanism
4User=root
0\ No newline at end of file5\ No newline at end of file
16
=== renamed directory 'dbus' => 'dbus.moved'
=== added file 'dbus/landscape.conf'
--- dbus/landscape.conf 1970-01-01 00:00:00 +0000
+++ dbus/landscape.conf 2012-04-22 14:14:27 +0000
@@ -0,0 +1,62 @@
1<!DOCTYPE busconfig PUBLIC
2 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
3 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
4<busconfig>
5
6 <policy user="landscape">
7 <allow own="com.canonical.landscape.Broker" />
8 <allow own="com.canonical.landscape.Monitor" />
9
10 <allow send_destination="com.canonical.landscape.Broker" />
11 <allow receive_sender="com.canonical.landscape.Broker" />
12
13 <allow send_destination="com.canonical.landscape.Monitor" />
14 <allow receive_sender="com.canonical.landscape.Monitor" />
15
16 <allow send_destination="com.canonical.landscape.Manager" />
17 <allow receive_sender="com.canonical.landscape.Manager" />
18
19 <allow send_interface="org.freedesktop.Hal.Manager" />
20 <allow send_interface="org.freedesktop.Hal.Device" />
21
22 </policy>
23
24 <!-- this is a horrible hack -->
25 <policy user="haldaemon">
26
27 <allow receive_sender="com.canonical.landscape.Manager" />
28 <allow receive_sender="com.canonical.landscape.Monitor" />
29 <allow receive_sender="com.canonical.landscape.Broker" />
30
31 </policy>
32
33 <policy user="root">
34 <allow own="com.canonical.landscape.Manager" />
35
36 <allow send_destination="com.canonical.landscape.Broker" />
37 <allow receive_sender="com.canonical.landscape.Broker" />
38
39 <allow send_destination="com.canonical.landscape.Monitor" />
40 <allow receive_sender="com.canonical.landscape.Monitor" />
41
42 <allow send_destination="com.canonical.landscape.Manager" />
43 <allow receive_sender="com.canonical.landscape.Manager" />
44 </policy>
45
46 <policy context="default">
47 <deny own="com.canonical.landscape.Broker" />
48 <deny own="com.canonical.landscape.Monitor" />
49 <deny own="com.canonical.landscape.Manager" />
50
51 <deny send_destination="com.canonical.landscape.Broker" />
52 <deny receive_sender="com.canonical.landscape.Broker" />
53
54 <deny send_destination="com.canonical.landscape.Monitor" />
55 <deny receive_sender="com.canonical.landscape.Monitor" />
56
57 <deny send_destination="com.canonical.landscape.Manager" />
58 <deny receive_sender="com.canonical.landscape.Manager" />
59
60 </policy>
61
62</busconfig>
063
=== added directory 'debian'
=== renamed directory 'debian' => 'debian.moved'
=== added file 'debian/README.source'
--- debian/README.source 1970-01-01 00:00:00 +0000
+++ debian/README.source 2012-04-22 14:14:27 +0000
@@ -0,0 +1,15 @@
1When making a revision to this package, please update the *last* digit in the
2Debian version number. e.g.
3
4 1.0.29-0ubuntu0.9.04.0
5
6should become
7
8 1.0.29-0ubuntu0.9.04.1
9
10In addition, when you build a package for a new client version, it would be
11appreciated if you also updated the UPSTREAM_VERSION variable in
12landscape/__init__.py to include the entire new client version number. This
13helps us keep track of exact version of clients in use. There's no need to
14update the DEBIAN_REVISION variable, as it gets automatically set at build
15time.
016
=== added file 'debian/changelog'
--- debian/changelog 1970-01-01 00:00:00 +0000
+++ debian/changelog 2012-04-22 14:14:27 +0000
@@ -0,0 +1,1189 @@
1landscape-client (12.04.3-0ubuntu1) precise; urgency=low
2
3 * Warn on unicode entry into settings UI (LP: #956612).
4 * Sanitise hostname field in settings UI (LP: #954507).
5 * Make it clear that the Landscape service is commercial (LP: #965850)
6 * Further internationalize the settings UI (LP: #962899)
7
8 -- David Britton <dpb@canonical.com> Wed, 28 Mar 2012 10:59:58 -0600
9
10landscape-client (12.04.2-0ubuntu1) precise; urgency=low
11
12 * Depend on python-aptdaemon.gtk3widgets instead of python-aptdaemon and
13 replace dependency on python-gobject by python-gi (LP: #961894)
14 * Add i18n to the landscape-client-ui-install script. (LP: #961891)
15
16 -- David Britton <dpb@canonical.com> Thu, 22 Mar 2012 10:10:39 -0600
17
18landscape-client (12.04.1-0ubuntu1) precise; urgency=low
19
20 * Fix default landscape hostname in glib schema.
21 * dpkg test improvements to fix intermittent failures.
22 * If ssl_public_key is supplied, use it also when fetching script
23 attachments. This fixes the case of using script execution with
24 attachments when the Landscape server is using a custom CA,
25 most common in LDS deployments. (LP: #959846)
26 * Make sure we have a PATH variable set before doing package
27 activities, and also set it in the initscript for good measure. If
28 the client was configured and restarted by the new UI configuration
29 tool, PATH wasn't set, triggering an error in dpkg. (LP: #961190)
30 * Make landscape-client-ui depend on landscape-client-ui-install, so
31 that we get an entry in the system settings if just
32 landscape-client-ui is installed. The actual entry comes from
33 landscape-client-ui-install.
34 * Optimization: when adding binaries, don't reload every repo, only the one
35 containing the binaries. (LP: #954822)
36 * Handle the case where the user clicks twice inadvertently on the
37 Landscape icon in system settings and don't start a second copy of
38 itself. (LP: #960211)
39
40 -- Andreas Hasenack <andreas@canonical.com> Wed, 21 Mar 2012 16:15:49 -0300
41
42landscape-client (12.04-0ubuntu1) precise; urgency=low
43
44 * d/control: Dropping python-central and python-support since
45 they are not used except in backports, and are not in main.
46
47 -- Clint Byrum <clint@ubuntu.com> Mon, 19 Mar 2012 16:05:49 -0700
48
49landscape-client (12.04-0ubuntu0.12.04.0) precise; urgency=low
50
51 * Change package management features to use APT instead of Smart (LP: #856244,
52 #861707, #859615, #861345, #863239, #863259, #865270, #865272, #865285,
53 #865273, #871641, #865299, #873196, #873939, #876493, #881973, #882438,
54 #866014, #881998, #884142, #884151, #884131, #887037, #886208, #887578,
55 #887947, #889067, #889069, #889087, #889099, #865303, #889113, #890605,
56 #890606, #890609, #897416, #891855, #898681, #898683, #897656, #898542,
57 #862212, #903202, #914734, #914735, #914737, #916301, #915280, #914742,
58 #918925, #918175, #919179, #921664, #921699, #922582, #922511, #921712,
59 #928750, #932136, #928941, #937411, #937567, #925543, #947803, #952973,
60 #948142, #953136, #953906, #956590).
61 * Add a GTK interface to configure the client (LP: #911279, #911666, #912163,
62 #911665, #916300, #931937, #931937, #943622, #945025, #911279, #944652,
63 #948464, #948416, #949158, #911671, #950864, #949208, #949147, #953070,
64 #953292, #953463, #953034, #949200, #953026, #954499, #954516, #954285,
65 #953065, #954414, #954332, #954542, #955966, #955139, #956030, #956119).
66 * Add the ability to auto discover the server location on local deployment
67 (LP: #917422, #927620, #917422, #928585, #929087, #932325, #948564)
68 * Allow the client to accept arbitrary environment variables from the
69 server for script execution (LP: #954999).
70 * Make landscape-config exit non-zero when registration fails and
71 --ok-no-register is not passed (LP: #271759).
72 * Check for the content of /sys/bus/xen/devices to report a machine as a Xen
73 VM instead of just relying on the existence of /sys/bus/xen (LP: #921970).
74 * Make sure cloud registration succeeds if there is no kernel specified in
75 the meta-data service (LP: #920453).
76 * Report private and public IP adresses from the metadata service at cloud
77 registration time (LP: #918366).
78 * Add support for reporting hardware information using lshw (LP: #899002,
79 #943975, #955734).
80 * Add support for the new attachment service in script execution
81 (LP: #893040).
82 * Adds a new message type, 'register-provisioned-machine', which is meant
83 to register computers using an OTP (LP: #881405).
84 * Add local cloning option for load testing (LP: #872830, #925924).
85 * Add more variables to preseeding (LP: #863204, #867710).
86 * Allow the configuration of the ping interval (LP: #397884).
87 * Add fake package reporters for load testing purposes (LP: #821571,
88 #821570).
89 * Report a package reporter error to the server if no APT sources are
90 configured, to trigger a package reporter alert (LP: #823769).
91
92 -- Andreas Hasenack <andreas@canonical.com> Mon, 19 Mar 2012 09:33:34 -0300
93
94landscape-client (11.07.1.1-0ubuntu2) precise; urgency=low
95
96 * Remove build dependency on python-central | python-support for demotion.
97
98 -- Matthias Klose <doko@ubuntu.com> Sat, 17 Dec 2011 17:25:00 +0100
99
100landscape-client (11.07.1.1-0ubuntu1.11.10.0) oneiric; urgency=low
101
102 * Included missing files (LP: #814223).
103
104 -- Andreas Hasenack <andreas@canonical.com> Thu, 21 Jul 2011 15:40:46 -0300
105
106landscape-client (11.07.1.1-0ubuntu0.11.10.0) oneiric; urgency=low
107
108 * Try to load the old persist file if the current one doesn't exist or is
109 empty (LP: #809210).
110 * Fallback to gethostname to get something interesting out of get_fqdn.
111 * Fix wrong ownership and permissions when the reporter is run as a result
112 of applying a repository profile (LP: #804008).
113 * Keep original sources.list ownership (LP: #804548).
114 * Refactored tests (LP: #805746).
115 * Preserve permissions of sources.list (LP: #804548).
116 * Added a broker command line option (--record) that saves exchanges with the
117 server to the filesystem
118 * Detect if running in a vmware guest (LP: #795794).
119 * Report VM type when run in the cloud (LP: #797069).
120 * Report VM type in non-cloud registration (LP: #795752).
121 * Report the package reporter result even in case of success, not just in
122 case of failure (LP: #780406).
123 * Report package reporter errors (LP: #732490).
124 * Fix dependencies for hardy removing references to python 2.4 packages for
125 pycurl and dbus (LP: #759764).
126 * The landscape client now reports whether it is running on a virtual machine
127 or not.
128 * Add a plugin which manages APT sources.list and the associated GPG keys
129 (LP: #758928).
130 * Limit the number of items in a network message to 200, to prevent problems
131 when communication is interrupted with the server and the client
132 accumulates too many network items, thus overloading the server when it's
133 available again (LP: #760486).
134 * Updated version number in __init__.py so that the client reports the
135 correct one in its user-agent string.
136
137 -- Andreas Hasenack <andreas@canonical.com> Mon, 18 Jul 2011 15:16:18 -0300
138
139landscape-client (11.02-0ubuntu0.11.04.1) natty; urgency=low
140
141 * debian/control, debian/rules: Add quilt
142 * debian/patches/fix-landscape-monitor.patch: Fix landscape
143 monitoring with gir1.0-gudev-1.0 installed. (LP: #747498)
144
145 -- Chuck Short <zulcss@ubuntu.com> Fri, 08 Apr 2011 09:46:24 -0400
146
147landscape-client (11.02-0ubuntu0.11.04.0) natty; urgency=low
148
149 * New upstream version (LP: #727324)
150
151 - Exit gracefully instead of crashing when the filesystem is
152 read-only (LP: #649997).
153
154 - Drop hal requirement (LP: #708502).
155
156 - Enable HTTP compression in Curl (LP: #297623).
157
158 - Explicitly name log files that need to be rotated (LP: #634236).
159
160 - Assorted test suite fixes
161
162 -- Andreas Hasenack <andreas@canonical.com> Tue, 01 Mar 2011 15:38:11 -0300
163
164landscape-client (11.01-0ubuntu0.11.04.0) natty; urgency=low
165
166 * New upstream version (LP: #702928)
167
168 - Use a better load check for the sysinfo wrapper, taking into account the
169 number of cores (LP: #643565).
170
171 - Add an option to bootstrap cloud instances using cloud-init
172 (LP: #701972).
173
174 - Fix packaging for Natty (LP: #688115).
175
176 - Force deletion of all the persist data for the monitoring plugins at
177 resynchronization, instead of relying each one of them to do
178 (LP: #688161).
179
180 - Don't send the mount-activity message to the server anymore
181 (LP: #688514).
182
183 - Workaround a new behavior in NetworkManager where getfqdn would report
184 localhost instead of useful hostname (LP: #649142).
185
186 -- Thomas Hervé <thomas.herve@canonical.com> Fri, 14 Jan 2011 10:11:04 -0600
187
188landscape-client (1.5.5.1-0ubuntu0.10.10.0) maverick; urgency=low
189
190 * The client network plugin would send erroneous data if a network
191 interface was removed (and its kernel module removed as well) and
192 then readded (LP: #641264).
193
194 -- Andreas Hasenack <andreas@canonical.com> Mon, 20 Sep 2010 13:52:49 -0300
195
196landscape-client (1.5.5-0ubuntu0.10.10.0) maverick; urgency=low
197
198 * New upstream version (LP: #633468)
199
200 - The --help command line option can now be used without being
201 root (LP: #613256).
202
203 - The client Unix sockets and symlinks are now cleaned up at shutdown.
204 Without this cleaning, the client could refuse to start because of a PID
205 collision (LP: #607747).
206
207 - The network traffic plugin didn't use to take into account integer
208 overflows. This would cause the plugin to send negative values
209 sometimes (LP: #615371).
210
211 - If a payload had many user activities in it, only the last one would be
212 carried out (LP: #617624).
213
214 - The Eucalyptus plugin was not enabled by default, which means the Cloud
215 Topology feature of Landscape was not available (LP: #614493).
216
217 -- Andreas Hasenack <andreas@canonical.com> Wed, 08 Sep 2010 15:34:09 -0400
218
219landscape-client (1.5.4-0ubuntu0.10.10.0) maverick; urgency=low
220
221 * New upstream version (LP: #610744):
222
223 - The Eucalyptus management plugin reports the output of the
224 'euca-describe-availability-zones verbose' command, which includes
225 information about the available instance types and the maximum
226 number of each instance type that the cloud can support (LP: #599338)
227
228 - Check if the package directory exists before trying to check the
229 package changer lock in the dbus-proxy. This fixes a bug when upgrading
230 a dbus-landscape which never registered (LP: #603514).
231
232 - Allow an LDS server to bootstrap new cloud instances with its own CA,
233 which is picked up by the client, written to a file on the instance, and
234 used in subsequent exchanges with the server (LP: #605079).
235
236 - Skip loopback interface when reporting device info (LP: #608314)
237
238 - Disable landscape-sysinfo when load is more than 1 (LP: #608278)
239
240 -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 28 Jul 2010 08:14:02 +0200
241
242landscape-client (1.5.2.1-0ubuntu0.10.10.0) maverick; urgency=low
243
244 * Include maverick in debian/rules substvars (LP: #596062)
245 * Filter duplicate network interfaces in get_active_interfaces (LP: #597000)
246
247 -- Free Ekanayaka <free.ekanayaka@canonical.com> Mon, 28 Jun 2010 18:07:18 +0200
248
249landscape-client (1.5.2-0ubuntu0.10.10.0) maverick; urgency=low
250
251 * New upstream version (LP: #594594):
252 - A new includes information about active network devices and their
253 IP address in sysinfo output (LP: #272344).
254 - A new plugin collects information about network traffic (#LP :284662).
255 - Report information about which packages requested a reboot (LP: #538253).
256 - Fix breakage on Lucid AMIs having no ramdisk (LP: #574810).
257 - Migrate the inter-process communication system from DBus to Twisted AMP.
258
259 -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 16 Jun 2010 12:03:50 +0200
260
261landscape-client (1.5.0-0ubuntu0.10.04.1) lucid; urgency=low
262
263 * New upstream version
264 - Fix smart-update failing its very first run (LP: 562496)
265 - Depend on pythonX.Y-dbus and pythonX.Y-pycurl (LP: #563063)
266
267 -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 21 Apr 2010 12:31:28 +0200
268
269landscape-client (1.5.0-0ubuntu0.10.04.0) lucid; urgency=low
270
271 * New upstream version (LP: #557244)
272 - Fix package-changer running before smart-update has completed (LP: #542215)
273 - Report the version of Eucalyptus used to generate topology data (LP: #554007)
274 - Enable the Eucalyptus plugin by default, if supported (LP: #546531)
275 - Use a whitelist of allowed filesystem types to instead of a blacklist (LP: #351927)
276 - Report the update-manager logs to the server (LP: #503384)
277 - Turn off Curl's DNS caching for requests. (LP: #522688)
278
279 -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 07 Apr 2010 16:27:45 +0200
280
281landscape-client (1.4.4-0ubuntu0.10.04.0) lucid; urgency=low
282
283 * New upstream release (LP: #519200):
284 - Add a message for creating package locks (LP: #514334)
285 - Add support for auto-approved change-packages messages (LP: #517175)
286 - Add support for installing server-generated debian packages (LP: #509752)
287 - Add support for reporting Eucalyptus topology information (LP: #518501)
288 - Fix timeout while inserting large free-space message (LP: #218388)
289 - Fix wrong log path in motd (LP: #517454)
290 - Fix race condition in process excecution (LP: #517453)
291
292 -- Free Ekanayaka <free.ekanayaka@canonical.com> Sat, 16 Jan 2010 14:11:32 +0100
293
294landscape-client (1.4.0-0ubuntu0.9.10.0) lucid; urgency=low
295
296 * New upstream release with several bug fixes:
297 - Fix landscape daemons fail to start when too many groups are
298 available (LP: #456124)
299 - Fix landscape programs wake up far too much. (LP: #340843)
300 - Fix Package manager fails with 'no such table: task' (LP #465846)
301 - Fix test suite leaving temporary files around (LP #476418)
302
303 * Add support for Ubuntu release upgrades:
304 - Add helper function to fetch many files at once (LP: #450629)
305 - Handle release-upgrade messages in the packagemanager
306 plugin (LP: #455217)
307 - Add a release-upgrader task handler (LP: #462543)
308 - Support upgrade-tool environment variables (LP: #463321)
309
310 * Add initial support for Smart package locking:
311 - Detect and report changes about Smart package locks (#488108)
312
313 -- Free Ekanayaka <free.ekanayaka@canonical.com> Tue, 01 Dec 2009 09:16:26 +0100
314
315landscape-client (1.3.2.4-0ubuntu0.9.10.0) karmic; urgency=low
316
317 * New upstream release:
318 - Catch import errors in the landscape-sysinfo script to prevent
319 errors when landscape-sysinfo is run to update the motd during
320 upgrade (LP: #349996)
321 - Fix a long-standing bug in the client which causes resynchronisations
322 on the server (LP: #144475)
323 - When downloading hash-id stores, pass possible custom SSL certificates
324 to the fetch fuction (LP: #435887)
325 - Handle unicode username in custom graphs, and also report missing user
326 to the server properly (LP: #406388)
327 - Handle a SQlite bug when creating package store database, by making an
328 extra query to flush the table cache (LP: #416629)
329
330 -- Free Ekanayaka <free.ekanayaka@canonical.com> Fri, 09 Oct 2009 18:21:24 +0200
331
332landscape-client (1.3.2.3-0ubuntu0.9.10.0) karmic; urgency=low
333
334 * New upstream release:
335 - Don't clear the hash_id_requests table upon resynchronize (LP #417122)
336
337 -- Free Ekanayaka <free.ekanayaka@canonical.com> Wed, 26 Aug 2009 15:16:59 +0200
338
339landscape-client (1.3.2.2-0ubuntu0.9.10.3) karmic; urgency=low
340
341 * Drop unsed dependency on libcurl3 and explicitly depend on
342 libcurl3-gnutls (>= 7.15.1-1ubuntu3) on dapper (LP: #406885)
343 * Add missing debian/landscape-common.config (LP: #410378)
344
345 -- Free Ekanayaka <free.ekanayaka@canonical.com> Thu, 30 Jul 2009 15:16:07 +0200
346
347landscape-client (1.3.2.2-0ubuntu0.9.10.2) karmic; urgency=low
348
349 * debian/control: dropping python-pysqlite2 dependency, since this
350 package is in universe, and python now has built-in sqlite support,
351 LP: #406641
352
353 -- Dustin Kirkland <kirkland@ubuntu.com> Wed, 29 Jul 2009 17:33:47 -0500
354
355landscape-client (1.3.2.2-0ubuntu0.9.10.1) karmic; urgency=low
356
357 [ Free Ekanayaka ]
358 * New upstream release:
359 - Include the README file in landscape-client (LP: #396260)
360 - Fix client capturing stderr from run_command when constructing
361 hash-id-databases url (LP: #397480)
362 - Use substvars to conditionally depend on update-motd or
363 libpam-modules (LP: #393454)
364 - Fix reporting wrong version to the server (LP: #391225)
365 - The init script does not wait for the network to be available
366 before checking for EC2 user data (LP: #383336)
367 - When the broker is restarted by the watchdog, the state of the client
368 is inconsistent (LP: #380633)
369 - Package stays unknown forever in the client with hash-id-databases
370 support (LP: #381356)
371 - Standard error not captured when calling smart-update (LP: #387441)
372 - Changer calls reporter without switching groups, just user (LP: #388092)
373 - Run smart update in the package-reporter instead of having a cronjob (LP: #362355)
374 - Package changer does not inherit proxy settings (LP: #381241)
375 - The ./test script doesn't work in landscape-client (LP: #381613)
376 - The source package should build on all supported releases (LP: #385098)
377 - Strip smart update's output (LP: #387331)
378 - The fetch() timeout isn't based on activity (#389224)
379 - Client can use a UUID of "None" when fetching the hash-id-database (LP: #381291)
380 - Registration should use the fqdn rather than just the hostname (LP: #385730)
381
382 -- Mathias Gug <mathiaz@ubuntu.com> Wed, 22 Jul 2009 14:54:50 -0400
383
384landscape-client (1.0.29.1-0ubuntu0.9.04.1) karmic; urgency=low
385
386 * debian/control: depend on libpam-modules, rather than update-motd
387
388 -- Dustin Kirkland <kirkland@ubuntu.com> Thu, 16 Jul 2009 11:36:27 -0500
389
390landscape-client (1.0.29.1-0ubuntu0.9.04.0) jaunty; urgency=low
391
392 * Apply a fix for segfault bug involving curl timeouts. (LP: #360510)
393
394 -- Christopher Armstrong <radix@ubuntu.com> Mon, 13 Apr 2009 14:33:31 -0400
395
396landscape-client (1.0.29-0ubuntu0.9.04.0) jaunty; urgency=low
397
398 * New upstream bugfix release (LP: #358744)
399 - Add a timeout to HTTP operations to avoid hanging (LP: #349737)
400 - Clean up environment variables on startup to avoid propagating
401 variables that will corrupt package installation (LP: #348681)
402 - Clean up FDs on startup for the same reason (LP: #352458)
403 - Catch and handle certain errors from smart (such as invalid package
404 data) to avoid "stuck" Landscape activities (LP: #268745)
405 - Don't print warnings meant for developers to the console (LP: #336669)
406
407 -- Christopher Armstrong <radix@ubuntu.com> Thu, 09 Apr 2009 17:09:50 -0400
408
409landscape-client (1.0.28-0ubuntu1.9.04.0) jaunty; urgency=low
410
411 * Fix minor packaging issues in last release (LP: #343954)
412 - Version number in landscape.VERSION is now correct
413 - Fixed package version number to maintain convention
414 * The following changes are in the 1.0.28 release:
415 - Invalidate package cache when server UUID changes (LP: #339948)
416 - Improve the "cloud mode" introduced in 1.0.26 to send more
417 disambiguation data (LP: #343942) and allow the EC2 user data to specify
418 the exchange and ping URLs (LP: #343947)
419 - Allow importing of initial configurations (along with public SSL
420 certificates) when running landscape-config (LP: #341705)
421 - Support a non-root mode which allows running the client without the
422 management functionality (LP: #82159)
423 - Automatic cloud registration when there's no user-data to specify an OTP
424 now works (LP: #344323)
425
426 -- Christopher Armstrong <radix@ubuntu.com> Thu, 19 Mar 2009 09:52:03 -0400
427
428landscape-client (1.0.28-0ubuntu1) jaunty; urgency=low
429
430 * New upstream release. (LP: #343954)
431
432 -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 18 Mar 2009 20:42:05 +0100
433
434landscape-client (1.0.26.1-0ubuntu0.9.04) jaunty; urgency=low
435
436 * Build for python2.6, include the symlinks in the package.
437
438 -- Matthias Klose <doko@ubuntu.com> Wed, 25 Feb 2009 12:03:23 +0000
439
440landscape-client (1.0.26-0ubuntu0.9.04) jaunty; urgency=low
441
442 * New upstream release (LP: #328151)
443
444 -- Christopher Armstrong <radix@ubuntu.com> Wed, 11 Feb 2009 17:00:54 +0000
445
446landscape-client (1.0.25-0ubuntu0.9.04) jaunty; urgency=low
447
448 * New upstream release supporting custom graphs (LP: #306360)
449 - Multiple custom graphs can be used at the same time (LP: #307314)
450 - PATH is now set for scripts in script execution (LP: #257018)
451 * debian/landscape-common.postinst: Only chown parts of /var/lib/landscape
452 because we now store files in it that should maintain their ownership
453 (LP: #307321).
454 * debian/landscape-client.postinst: Work around chfn/system user problem
455 by not specifying a --gecos (LP: #238755)
456 * debian/landscape-client.logrotate: logrotate no longer reports spurious
457 errors when the client isn't running (LP: #271767)
458
459 -- Christopher Armstrong <radix@ubuntu.com> Thu, 11 Dec 2008 17:11:08 -0800
460
461landscape-client (1.0.23-0ubuntu0.8.10.1) intrepid; urgency=low
462
463 * debian/control: Update Replaces to < 1.0.23-0ubuntu0.8.10 to correctly
464 replace newer unsplit versions of the landscape package (LP: #285030).
465
466 -- Christopher Armstrong <radix@ubuntu.com> Fri, 17 Oct 2008 12:42:23 -0400
467
468landscape-client (1.0.23-0ubuntu0.8.10) intrepid; urgency=low
469
470 * New upstream release. (LP: #277658):
471 Changes since 1.0.21.1:
472 - Don't print duplicate warnings when / is nearing capacity in sysinfo
473 (LP: #260230).
474 - Slight change to link text in landscape-sysinfo.
475 - Don't crash badly when programs are run as the incorrect user
476 (LP: #268879).
477 * debian/changelog: New debian-version scheme including Ubuntu version. The
478 same upstream version is available for all supported releases.
479 (LP: #277682).
480 * debian/landscape-client.postrm: Delete log and data files upon purge
481 (LP: #121182).
482 * debian/landscape-common.postrm: Delete the sysinfo logs upon purge.
483
484 -- Christopher Armstrong <radix@ubuntu.com> Thu, 09 Oct 2008 11:40:51 -0400
485
486landscape-client (1.0.21.1-0ubuntu2) intrepid; urgency=low
487
488 * debian/control: fix bzr url
489 * debian/landscape-sysinfo.wrapper: print a timestamp before the sysinfo
490 data to ensure appropriate context (LP: #270862)
491
492 -- Dustin Kirkland <kirkland@ubuntu.com> Tue, 30 Sep 2008 17:13:18 -0500
493
494landscape-client (1.0.21.1-0ubuntu1) intrepid; urgency=low
495
496 * New upstream version:
497 * Add ok-no-register option to landscape-config script to not fail if
498 dbus isn't started or landscape-client isn't running.
499 * lower timeout related to package management in landscape.
500 * debian/control: Depend on cron.
501 * debian/landscape-client.postinst: use ok-no-register option so that the
502 postinst script doesn't fail when run from the installer. (LP: #274573).
503
504 -- Mathias Gug <mathiaz@ubuntu.com> Thu, 25 Sep 2008 17:54:00 -0400
505
506landscape-client (1.0.21-0ubuntu2) intrepid; urgency=low
507
508 * debian/rules: Install an hourly cron job to update smart package data.
509 Thanks to Christopher Armstrong (LP: #268765).
510 * debian/control:
511 - Move ${misc:Depends} to Depends.
512 - Add VCS-* headers.
513 * debian/landscape-client.postrm:
514 - remove /etc/default/landscape-client when the package is purged.
515
516 -- Mathias Gug <mathiaz@ubuntu.com> Tue, 23 Sep 2008 18:19:26 -0400
517
518landscape-client (1.0.21-0ubuntu1) intrepid; urgency=low
519
520 [ Christopher Armstrong ]
521 * New upstream release (LP: #271886):
522 - Bug fix release:
523 - Avoid the PotentialZombieWarning on landscape-client startup.
524 (LP: #257346)
525 - When run as root, read sysinfo configuration from /etc and and write
526 logs to /var/log instead of /root. (LP: #268560)
527 - Avoid ZeroDivisionErrors when /home is an autofs. (LP: #269634)
528 - Don't corrupt a pid file when trying to start the client when it's
529 already running. (LP: #269634)
530 - Remove the pid file when shutting down the client. (LP: #257081)
531
532 [ Mathias Gug ]
533 * debian/landscape-client.init: specify the pid file and use --startas
534 instead of --exec when starting landscape-client so that the init script
535 doesn't fail if landscape-client is already running.
536
537 -- Mathias Gug <mathiaz@ubuntu.com> Fri, 19 Sep 2008 17:28:08 -0400
538
539landscape-client (1.0.18-0ubuntu4) intrepid; urgency=low
540
541 [ Christopher Armstrong ]
542 * debian/landscape-common.postinst: Don't blow up when the landscape-sysinfo
543 symlinks already exist (LP: #270131)
544
545 [ Mathias Gug ]
546 * debian/landscape-common.postinst, debian/landscape-common.prerm: don't
547 call update-motd init script as it's no longer available in the
548 update-motd package. Call directly /usr/sbin/update-motd instead.
549 (LP: #271854)
550
551 -- Mathias Gug <mathiaz@ubuntu.com> Thu, 18 Sep 2008 16:47:08 -0400
552
553landscape-client (1.0.18-0ubuntu3) intrepid; urgency=low
554
555 * debian/control: Add Replaces for landscape-common since
556 landscape-sysinfo has been moved from -client to -common.
557
558 -- Mathias Gug <mathiaz@ubuntu.com> Tue, 16 Sep 2008 17:16:50 -0400
559
560landscape-client (1.0.18-0ubuntu2) intrepid; urgency=low
561
562 [ Mathias Gug ]
563 * Split the package into two packages:
564 - landscape-common: has the python libraries and the landscape-sysinfo
565 command. A landscape account is not required to use this package.
566 - landscape-client: has all the binaries required to run the
567 landscape-client. Requires a landscape account.
568 - debian/control:
569 + move some dependencies to landscape-client so that
570 landscape-common doesn't install unecessary packages in the
571 default -server install.
572 + move python-gobject to a Pre-Depends so that landscape-config can
573 register the system during the postinst (LP: #268838).
574 * debian/control:
575 - depend on python-smartpm instead of smartpm-core.
576 * debian/landscape-client.postrm: delete /etc/landscape/client.conf when
577 the package is purged.
578 * debian/landscape-client.postinst: remove sysinfo_in_motd debconf question
579 as it wasn't used.
580
581 [ Christopher Armstrong ]
582 * Fixes for (LP: #268352).
583 - scripts/landscape-sysinfo.wrapper: New script to run landscape-sysinfo
584 with leading whitespace.
585 - debian/rules: Install wrapper into /usr/share/landscape.
586 - debian/landscape-client.postinst: Link wrapper into place.
587
588 -- Mathias Gug <mathiaz@ubuntu.com> Mon, 15 Sep 2008 17:21:53 -0400
589
590landscape-client (1.0.18-0ubuntu1) intrepid; urgency=low
591
592 * New upstream release
593
594 -- Rick Clark <rick.clark@ubuntu.com> Mon, 08 Sep 2008 16:35:57 -0500
595
596landscape-client (1.0.17-0ubuntu1) intrepid; urgency=low
597
598 [ Dustin Kirkland and Rick Clark ]
599 * debian/compat: updated to 6.
600 * debian/config: initial debconf config.
601 * debian/control: reformatted depends and changed smartpm-core version;
602 changed Standards-Version to 3.8.0; added adduser to depends as needed by
603 postinst and postrm; updates smartpm-core dep to >1.0; moved most build
604 deps to Build-Depends-Indep; add po-debconf build dependency; added
605 debconf hooks for installing landscape-sysinfo as an update-motd or
606 profile.d script.
607 * debian/copyright: updated copyright date; removed incorrect symlink to
608 GPL-3; added Dustin and Rick to the packaging credits.
609 * debian/landscape-client.init: removed S from stop; rewritten to be more
610 lsb/Debian compliant; added status action; fixed whitespacing
611 inconsistency; use $NAME whenever possible; comment why we're not using
612 status_of_proc().
613 * debian/landscape-client.lintian-overrides: added with two overrides
614 * debian/landscape-client.overrides: removed.
615 * debian/landscape-client.prerm: initial creation, remove landscape-sysinfo
616 update-motd or profile.d script, if any exists.
617 * debian/landscape-client.postinst: fixed deprecated chmod call; changed
618 home dir of landscape user; removed uneeded update-rc.d; added code to
619 handle debconf; created a function for retrieving values from ini config;
620 /usr/share/debconf/comfmodule to top of postinst; add db_stop back in.
621 * debian/landscape-client.postrm: added debhelper tag.
622 * debian/rules: added po debconf bits for translation; depend on update-motd.
623 * debian/pycompat: initial creation.
624 * debian/po/POTFILES.in, debian/po/templates.pot: initial creation.
625 * man/txt2man, man/*.txt: removed; manpages should *really* be in native
626 format.
627 * man/landscape-client.1, man/landscape-config.1, man/landscape-message.1:
628 manpages in roff format, initially created by txt2man, some minor tweaks
629 to the title and such.
630
631 [ Gustavo Niemeyer ]
632 * New Upstream release
633 * Fix copyright dates in debian/copyright
634 * fix the chown call to use a colon
635 * Fixed missing $PACKAGES variable in postinst
636 * Implemented support for configuration the computer title via debconf
637
638 [ Kees Cook ]
639 * removed unused debian/autoppa-switch.
640 * fixed debian/landscape-client.init to run log_end_msg in the right place.
641 * debian/landscape-client.postrm: rewrote to allow debhelper to do its
642 job, fixed deluser call.
643 * debian/landscape-client.postinst: rewrote to allow debhelper to do its
644 job, fixed use of adduser.
645 * debian/rules: use "install" instead of "cp", dropped lintian overrides.
646 * debian/changelog: drop redundant changelog entries.
647
648 [ Rick Clark ]
649 * removed .override file
650 * removed .autoppa files
651
652 -- Dustin Kirkland <kirkland@ubuntu.com> Thu, 04 Sep 2008 13:28:14 -0500
653
654landscape-client (1.0.16-intrepid1-landscape1) intrepid; urgency=low
655
656 * landscape-config can now be run in a non-interactive mode
657
658 -- Andreas Hasenack <andreas@canonical.com> Fri, 8 Aug 2008 14:34:43 +0000
659
660landscape-client (1.0.15-intrepid1-landscape1) intrepid; urgency=low
661
662 * introduce a basic landscape-sysinfo tool
663 * properly report a script execution error if its exit status is not
664 zero
665
666 -- Andreas Hasenack <andreas@canonical.com> Thu, 7 Aug 2008 18:33:41 +0000
667
668landscape-client (1.0.14-intrepid1-landscape1) intrepid; urgency=low
669
670 * fixed some dbus errors in some of the supported distributions
671 * added restart/shutdown plugin
672 * scripts can now have accented characters in them
673
674 -- Andreas Hasenack <andreas@canonical.com> Thu, 24 Jul 2008 13:06:34 +0000
675
676landscape-client (1.0.13-hardy1-landscape1) hardy; urgency=low
677
678 * the timestamp in the error message from processkiller.py is now
679 formatted properly
680 * the process list sent to the server was only being updated for new
681 processes, and not when existing processes changed
682 * in script execution, a timeout error is now reported with a proper
683 error message instead of just a generic failure in the script
684
685 -- Andreas Hasenack <andreas@canonical.com> Thu, 10 Jul 2008 14:24:15 +0000
686
687landscape-client (1.0.12-hardy1-landscape1) hardy; urgency=low
688
689 * the sleep average value of a process is no longer provided by recent
690 kernels. The client now computes and sends the CPU usage instead.
691 * initial directory for script execution is now the target user's home
692 directory and, if that is unavailable, /. Previously it was /root.
693 * new user creation was ignoring some extra fields such as Location and
694 phone numbers
695 * the machine uptime was incorrectly reported after a logrotate run and if
696 there was no reboot afterwards. This affected the process listing page in
697 the web interface, where processes would show up as having been started
698 around 1970.
699
700 -- Andreas Hasenack <andreas@canonical.com> Thu, 26 Jun 2008 16:17:59 +0000
701
702landscape-client (1.0.11-hardy1-landscape1) hardy; urgency=low
703
704 * fixed a regression where an important fix was missing from the
705 new staging branch
706
707 -- Andreas Hasenack <andreas@canonical.com> Fri, 13 Jun 2008 14:45:08 +0000
708
709landscape-client (1.0.10-hardy1-landscape1) hardy; urgency=low
710
711 * Change the utilisation of the csv module to be compatible with
712 python 2.4 as used in Dapper.
713
714 -- Andreas Hasenack <andreas@canonical.com> Thu, 12 Jun 2008 17:58:05 +0000
715
716landscape-client (1.0.9-hardy1-landscape1) hardy; urgency=low
717
718 * restrict users and groups list to local ones only, i.e., /etc/passwd
719 and /etc/group
720 * fixed some tests that were failing in locales other than english
721
722 -- Andreas Hasenack <andreas@canonical.com> Wed, 11 Jun 2008 15:16:12 +0000
723
724landscape-client (1.0.4-hardy1-landscape1) hardy; urgency=low
725
726 * fixed permissions and ownership of some files and directories which could
727 prevent package data from being uploaded to the Landscape server
728 * fixed a problem where the root user password could not be changed
729 * the watchdog.log log file is now also rotated
730
731 -- Andreas Hasenack <andreas@canonical.com> Wed, 16 Apr 2008 17:21:20 +0000
732
733landscape-client (1.0-hardy1-landscape4) hardy; urgency=low
734
735 * Memory consumption has is improved. The client's functionality is
736 now broken up into a number of sub-processes. Functionality that
737 would previously use or leak memory, such as package management,
738 run in independent processes that exit when they complete so the
739 OS can reclaim the memory.
740 * Security is improved with this design. Monitoring plugins run as
741 the unpriviledged landscape user while management functions run as
742 root.
743 * Secure inter-process communication occurs over DBUS.
744
745 -- Michel Pelletier <pelletier.michel@gmail.com> Wed, 27 Feb 2008 22:57:21 +0000
746
747landscape-client (0.17.0-hardy1-landscape1) hardy; urgency=low
748
749 * The client now reports the primary group for users. I can also
750 modify it when requested by the server (#122212).
751
752 -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 21 Nov 2007 19:14:29 +0000
753
754landscape-client (0.16.0-hardy1-landscape1) hardy; urgency=low
755
756 * The client no longer schedules an urgent exchange if it detects
757 that the server has not processed any messages in its most recent
758 exchange (#138135).
759 * The total number of pending messages are sent to the server to
760 make it possible to generate backlog statistics (#162733).
761
762 -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 14 Nov 2007 23:09:58 +0000
763
764landscape-client (0.15.0-gutsy1-landscape1) gutsy; urgency=low
765
766 * Support for http_proxy and https_proxy variables in the
767 configuration file and in the interactive setup, as well as
768 --http-proxy and --https-proxy parameters is available (#151690).
769 * The client gracefully fails when unknown request-ids for
770 package-related operations are received (#151085).
771 * Child devices that have been removed are not reported when one of
772 their ancestors is also reported for deletion by the hardware
773 inventory plugin (#136497).
774
775 -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 26 Oct 2007 23:23:20 +0000
776
777landscape-client (0.14.0-gutsy1-landscape1) gutsy; urgency=low
778
779 * Failures that would occur is a user wasn't in the shadow file are
780 fixed (#102071).
781 * Whitespace surrounding process command-line names is removed
782 before they are reported to the server (#149112).
783 * Test failures, some related to DBUS on gutsy, are fixed.
784
785 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 25 Oct 2007 00:03:06 +0000
786
787landscape-client (0.13.0-gutsy1-landscape1) gutsy; urgency=low
788
789 * When unknown package IDs are sent by the server message handling
790 is postponed until the client is aware of the unknown IDs
791 (#128796).
792
793 -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 17 Oct 2007 17:36:11 +0000
794
795landscape-client (0.12.2-gutsy1-landscape1) gutsy; urgency=low
796
797 * The client now reports it's version correctly.
798
799 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 11 Oct 2007 21:32:24 +0000
800
801landscape-client (0.12.1-gutsy1-landscape1) gutsy; urgency=low
802
803 * A critical bug that would break configure-landscape is fixed.
804
805 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 9 Oct 2007 21:10:02 +0000
806
807landscape-client (0.12.0-gutsy1-landscape7) gutsy; urgency=low
808
809 * Fixed typo in version string.
810
811 -- Jamshed Kakar <jamshed.kakar@canonical.com> Sat, 6 Oct 2007 00:49:10 +0000
812
813landscape-client (0.12.0-gutsy1-landscape6) gutsy; urgency=low
814
815 * Updated Depends to require new smartpm-core 0.52 packages.
816
817 -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 5 Oct 2007 23:23:17 +0000
818
819landscape-client (0.12.0-gutsy1-landscape5) gutsy; urgency=low
820
821 * No upstream changes. New package build.
822
823 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 4 Oct 2007 22:35:50 +0000
824
825landscape-client (0.12.0-gutsy1-landscape4) gutsy; urgency=low
826
827 * Updated package requires current version of smartpm-core.
828
829 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 2 Oct 2007 21:37:56 +0000
830
831landscape-client (0.11.0-gutsy1-landscape1) gutsy; urgency=low
832
833 * The full command name for a process, where retrievable, is
834 reported to the server instead of just the first 16 characters
835 (#131878).
836 * The historic process plugin, unused for months, has been removed
837 (#134122).
838 * A new landscape-message command-line program is available. It
839 allows administrators to send messages from a console that end up
840 in the account history (#125083).
841 * The landscape-client.log file is now logrotated regularly
842 (#78494).
843
844 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 13 Sep 2007 00:05:43 +0000
845
846landscape-client (0.10.15-gutsy1-landscape1) gutsy; urgency=low
847
848 * THIS IS A TEST BUILD!
849 * The full command name, where retrievable, is reported to the
850 server instead of just the first 16 characters (#131878).
851 * The historic process plugin, unused for months, has been removed
852 (#134122).
853 * A new landscape-message command-line program is available. It
854 allows administrators to send messages from a console that end up
855 in the account history (#125083).
856 * The landscape-client.log file is now logrotated regularly
857 (#78494).
858
859 -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 12 Sep 2007 22:48:19 +0000
860
861landscape-client (0.10.12-1ubuntu1) feisty; urgency=low
862
863 * New upstream release.
864 * Package Depends updated to use new smartpm-0.51-landscape4
865 package. This makes the package installable on Ubuntu systems
866 with only the main repository enabled.
867
868 -- Landscape Team <landscape-team@canonical.com> Tue, 7 Aug 2007 16:08:00 -0700
869
870landscape-client (0.10.11-1ubuntu1) feisty; urgency=low
871
872 * New upstream release.
873 * A bug related to package dependency reporting that would cause two
874 approvals for and upgrade package request has been fixed.
875 * Errors with the ping server are logged clearly now.
876 * A crashing postinit-related bug is fixed.
877
878 -- Landscape Team <landscape-team@canonical.com> Fri, 3 Aug 2007 19:15:00 -0700
879
880landscape-client (0.10.10-1ubuntu1) feisty; urgency=low
881
882 * New upstream release.
883 * CA certificates are no longer hard-coded. The default set of CAs
884 in the system are used instead.
885 * The client connects to the server immediately when it detects
886 changes in packages and users. This dramatically reduces the
887 turn-around time of some operations.
888 * The new user and group change detection reports detailed
889 information to the server about changes made external to the
890 client, such as by local users.
891 * The client reports detailed information about the outcome of user
892 and group operations.
893 * The client has support for a new synchronization system. If
894 either the server or client detect inconsistencies in the data
895 they have they can request a synchronization to get back in sync.
896 * The client has support to calculate and report package upgrades.
897 * The hostname is reported when clients first register with the
898 server.
899 * A new configure-landscape script eases registration including
900 automated and interactive registration modes.
901 * The client includes VM size and sleep average in active process
902 data.
903
904 -- Landscape Team <landscape-team@canonical.com> Thu, 28 Jun 2007 16:19:00 -0700
905
906landscape-client (0.10.9-1ubuntu1) feisty; urgency=low
907
908 * New upstream release.
909 * Package depends on python-gdbm to install correctly on systems
910 without it.
911
912 -- Landscape Team <landscape-team@canonical.com> Fri, 8 Jun 2007 11:02:00 -0700
913
914landscape-client (0.10.8-1ubuntu1) feisty; urgency=low
915
916 * New upstream release.
917 * The changes that included the new configure-landscape helper
918 script have been removed. They were not quite ready for release.
919 * Added python-twisted-web to Debian package Depends to satisfy
920 dependencies introduced by the new ping plugin.
921
922 -- Landscape Team <landscape-team@canonical.com> Thu, 7 Jun 2007 11:03:00 -0700
923
924landscape-client (0.10.7-1ubuntu1) feisty; urgency=low
925
926 * New upstream release.
927 * Package depends on new smartpm-core package which installs
928 correctly on dapper.
929
930 -- Landscape Team <landscape-team@canonical.com> Wed, 6 Jun 2007 10:37:00 -0700
931
932landscape-client (0.10.6-1ubuntu1) feisty; urgency=low
933
934 * New upstream release.
935 * Mispelled smartpm-core version is fixed.
936
937 -- Landscape Team <landscape-team@canonical.com> Mon, 1 Jun 2007 10:48:00 -0700
938
939landscape-client (0.10.5-1ubuntu1) feisty; urgency=low
940
941 * New upstream release.
942 * Mismatched operation status codes are fixed.
943
944 -- Landscape Team <landscape-team@canonical.com> Thu, 31 May 2007 15:36:00 -0700
945
946landscape-client (0.10.4-1ubuntu1) feisty; urgency=low
947
948 * New upstream release.
949 * Links to a new version of smart with a fixed crontab entry.
950
951 -- Landscape Team <landscape-team@canonical.com> Tue, 22 May 2007 23:29:00 -0700
952
953landscape-client (0.10.3-1ubuntu1) feisty; urgency=low
954
955 * New upstream release.
956 * A bug related to bpickle conversions with float-point values is
957 fixed (#114829).
958
959 -- Landscape Team <landscape-team@canonical.com> Mon, 15 May 2007 16:31:00 -0700
960
961landscape-client (0.10.2-1ubuntu1) feisty; urgency=low
962
963 * New upstream release.
964 * New package includes previously missing package management plugin.
965
966 -- Landscape Team <landscape-devel@lists.canonical.com> Fri, 11 May 2007 10:20:00 -0700
967
968landscape-client (0.10.1-1ubuntu1) feisty; urgency=low
969
970 * New upstream release.
971 * Minor fix in package management plugin timings.
972
973 -- Landscape Team <landscape-devel@lists.canonical.com> Thu, 10 May 2007 10:00:00 -0700
974
975landscape-client (0.10.0-1ubuntu1) feisty; urgency=low
976
977 * New upstream release.
978 * Basic package management operations are now supported. The client
979 reports package information to the server and can install and/or
980 remove packages.
981 * The client uses the new operations system. Support for the now
982 unused action info system is gone.
983 * A minor bpickle bug was fixed.
984
985 -- Jamshed Kakar <jamshed.kakar@canonical.com> Mon, 7 May 2007 20:16:00 -0700
986
987landscape-client (0.9.6-1ubuntu1) feisty; urgency=low
988
989 * New upstream release.
990 * Bugs related to the handling of DBus types are fixed on feisty.
991
992 -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 13 Apr 2007 18:06:10 -0700
993
994landscape-client (0.9.5-1ubuntu1) feisty; urgency=low
995
996 * New upstream release.
997 * Old-school and oddly formatted GECOS fields are handled correctly.
998
999 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 30 Mar 2007 16:50:49 -0400
1000
1001landscape-client (0.9.4-1ubuntu1) feisty; urgency=low
1002
1003 * New upstream release.
1004 * Change architecture to all.
1005
1006 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 30 Mar 2007 12:46:23 -0400
1007
1008landscape-client (0.9.3-1ubuntu1) feisty; urgency=low
1009
1010 * New upstream release.
1011 * Add override file.
1012 * Bump application and package versions.
1013
1014 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 29 Mar 2007 17:21:50 -0400
1015
1016landscape-client (0.9.2-1ubuntu1) feisty; urgency=low
1017
1018 * Bump debhelper version.
1019 * Build-Depend on python-dev, lsb-release.
1020 * Pre-Depend on debconf | debconf-2.0.
1021 * Move ${python:Depends} to Depends.
1022 * Make the packaging compatible with dapper and newer distro releases.
1023
1024 -- Matthias Klose <doko@ubuntu.com> Wed, 28 Mar 2007 21:21:20 +0200
1025
1026landscape-client (0.9.2-1) unstable; urgency=low
1027
1028 * New upstream release.
1029 * Really fixed package.
1030
1031 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 21 Mar 2007 09:57:00 -0400
1032
1033landscape-client (0.9.1-3) unstable; urgency=low
1034
1035 * Really fixed package.
1036
1037 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 20 Mar 2007 16:35:00 -0400
1038
1039landscape-client (0.9.1-2) unstable; urgency=low
1040
1041 * Fixed package.
1042
1043 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 20 Mar 2007 16:25:00 -0400
1044
1045landscape-client (0.9.1-1) unstable; urgency=low
1046
1047 * New upstream release.
1048 * bpickle encoding format has changed in a non-backwards compatible
1049 way to fix float encoding-related problems.
1050 * API version updated to 2.0.
1051
1052 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 20 Mar 2007 15:06:17 -0400
1053
1054landscape-client (0.9.0-1) unstable; urgency=low
1055
1056 * New upstream release.
1057 * Group-management related tasks such as add/remove member and
1058 create group are now supported.
1059 * Client reports hardware inventory information to the server.
1060 * Unicode handling with regards to the passwd file is improved.
1061
1062 -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 9 Mar 2007 16:04:51 -0800
1063
1064landscape-client (0.8.1-1) unstable; urgency=low
1065
1066 * New upstream release.
1067 * Account registration log message no longer exposes account
1068 password.
1069
1070 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 18 Jan 2007 23:07:00 -0800
1071
1072landscape-client (0.8.0-1) unstable; urgency=low
1073
1074 * New upstream release.
1075 * Process monitoring logic stops trying to restart the client if too
1076 many restarts occur during a short period of time.
1077 * Client includes an SSL certificate to verify the server with.
1078 * Package depends on python2.4-pycurl, which is necessary for the
1079 new SSL support.
1080
1081 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 18 Jan 2007 10:48:00 -0800
1082
1083landscape-client (0.7.0-1) unstable; urgency=low
1084
1085 * New upstream release.
1086 * Client can daemonize itself and perform basic process monitoring.
1087 * Client writes a useful log now. Command-line options have been
1088 added to control log verbosity.
1089 * Package depends on perl-modules, which is necessary for bare-bones
1090 server installs.
1091
1092 -- Jamshed Kakar <jamshed.kakar@canonical.com> Tue, 2 Jan 2007 12:54:00 -0800
1093
1094landscape-client (0.6.1-1) unstable; urgency=low
1095
1096 * User management plugin handles extra Ubuntu user fields.
1097
1098 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 15 Dec 2006 10:22:00 -0800
1099
1100landscape-client (0.6.0-2) unstable; urgency=low
1101
1102 * Reverted to deprecated build rule to fix package breakage on
1103 dapper.
1104
1105 -- Jamshed Kakar <jamshed.kakar@canonical.com> Thu, 7 Dec 2006 10:54:00 -0800
1106
1107landscape-client (0.6.0-1) unstable; urgency=low
1108
1109 * New upstream release.
1110 * The active-process-info plugin provides server-controllable
1111 end/kill actions.
1112 * Messages are no longer delivered twice if a broken message gets
1113 into the message store.
1114
1115 -- Jamshed Kakar <jamshed.kakar@canonical.com> Wed, 6 Dec 2006 14:47:00 -0800
1116
1117landscape-client (0.5.0-1) unstable; urgency=low
1118
1119 * New upstream release.
1120 * Client-to-server exchanges now happen in a thread to avoid
1121 blocking monitoring plugins.
1122 * Problems that caused slow client registration have been fixed.
1123 * The computer-info plugin now reports information about the
1124 distribution installed on a machine.
1125
1126 -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 10 Nov 2006 12:47:00 -0800
1127
1128landscape-client (0.4.0-1) unstable; urgency=low
1129
1130 * New upstream release.
1131 * Disk, load, memory/swap and temperature data is now reported at
1132 300s-aligned intervals.
1133 * Improvements to registration system.
1134 * Improvements to plugin infrastructure.
1135
1136 -- Jamshed Kakar <jamshed.kakar@canonical.com> Fri, 13 Oct 2006 09:25:00 -0300
1137
1138landscape-client (0.3.0-1) unstable; urgency=low
1139
1140 * New upstream release.
1141 * Major reorganization of client code.
1142
1143 -- Christopher Armstrong <radix@canonical.com> Tue, 22 Aug 2006 09:56:00 -0400
1144
1145landscape-client (0.2.5-1) unstable; urgency=low
1146
1147 * New upstream release.
1148 * Fix a bug in the newly introduced client upgrade machinery.
1149
1150 -- Christopher Armstrong <radix@canonical.com> Wed, 4 Aug 2006 10:45:00 -0500
1151
1152landscape-client (0.2.4-1) unstable; urgency=low
1153
1154 * New upstream release.
1155 * User management should now be working.
1156
1157 -- Christopher Armstrong <radix@canonical.com> Wed, 3 Aug 2006 15:12:00 -0500
1158
1159landscape-client (0.2.3-1) unstable; urgency=low
1160
1161 * New upstream release.
1162 * Fixed a bug in the init script preventing landscape-client from
1163 starting after reboots.
1164
1165 -- Christopher Armstrong <radix@canonical.com> Wed, 26 Jul 2006 15:47:00 -0500
1166
1167landscape-client (0.2.2-1) unstable; urgency=low
1168
1169 * New upstream release.
1170
1171 -- Christopher Armstrong <radix@canonical.com> Thu, 6 Jul 2006 18:38:00 -0500
1172
1173landscape-client (0.2.1-1) unstable; urgency=low
1174
1175 * Added support for debconf.
1176
1177 -- Gustavo Niemeyer <gustavo@niemeyer.net> Wed, 5 Jul 2006 14:13:25 -0300
1178
1179landscape-client (0.2.0-1) unstable; urgency=low
1180
1181 * Initial (internal) release.
1182
1183 -- Christopher Armstrong <radix@canonical.com> Wed, 28 Jun 2006 14:32:30 -0500
1184
1185landscape-client (0.1) dapper; urgency=low
1186
1187 * Empty placeholder package
1188
1189 -- Matt Zimmerman <mdz@ubuntu.com> Fri, 26 May 2006 06:37:55 -0700
01190
=== added file 'debian/cloud-default.conf'
--- debian/cloud-default.conf 1970-01-01 00:00:00 +0000
+++ debian/cloud-default.conf 2012-04-22 14:14:27 +0000
@@ -0,0 +1,7 @@
1[client]
2cloud = True
3url = https://landscape.canonical.com/message-system
4data_path = /var/lib/landscape/client
5ping_url = http://landscape.canonical.com/ping
6include_manager_plugins = ScriptExecution
7script_users = ALL
08
=== added file 'debian/compat'
--- debian/compat 1970-01-01 00:00:00 +0000
+++ debian/compat 2012-04-22 14:14:27 +0000
@@ -0,0 +1,1 @@
15
02
=== added file 'debian/control'
--- debian/control 1970-01-01 00:00:00 +0000
+++ debian/control 2012-04-22 14:14:27 +0000
@@ -0,0 +1,76 @@
1Source: landscape-client
2Section: admin
3Priority: optional
4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5XSBC-Original-Maintainer: Landscape Team <landscape-team@canonical.com>
6Build-Depends: debhelper (>= 5), po-debconf, python-dev, lsb-release, gawk, python-twisted-core, python-distutils-extra
7Standards-Version: 3.8.0
8XS-Python-Version: >= 2.4, << 2.8
9
10Package: landscape-common
11Architecture: any
12Depends: ${python:Depends}, ${misc:Depends}, ${extra:Depends},
13 python-gnupginterface,
14 python-twisted-core,
15 python-apt,
16 ca-certificates,
17 python-gdbm,
18 lsb-release,
19 lsb-base,
20 adduser,
21 bc,
22 lshw
23Suggests: ${extra:Suggests}
24Replaces: landscape-client (<= 1.0.23-0ubuntu0.8.10)
25Description: The Landscape administration system client - Common files
26 Landscape is a web-based tool for managing Ubuntu systems. This
27 package is necessary if you want your machine to be managed in a
28 Landscape account.
29 .
30 This package provides the core libraries.
31XB-Python-Version: ${python:Versions}
32
33Package: landscape-client
34Architecture: any
35Depends: ${python:Depends}, ${misc:Depends}, ${extra:Depends},
36 python-twisted-web,
37 python-twisted-names,
38 landscape-common (>= ${Source-Version})
39Suggests: ${extra:Suggests}
40Description: The Landscape administration system client
41 Landscape is a web-based tool for managing Ubuntu systems. This
42 package is necessary if you want your machine to be managed in a
43 Landscape account.
44 .
45 This package provides the Landscape client and requires a Landscape account.
46XB-Python-Version: ${python:Versions}
47
48Package: landscape-client-ui
49Architecture: any
50Depends: ${python:Depends}, ${misc:Depends},
51 landscape-client (>= ${Source-Version}),
52 landscape-client-ui-install (>= ${Source-Version}),
53 python-gi,
54 python-dbus,
55 policykit-1,
56 gir1.2-notify-0.7,
57 gir1.2-gtk-3.0
58Description: The Landscape administration system client - UI configuration
59 Landscape is a web-based tool for managing Ubuntu systems.
60 .
61 This package provides the Landscape client configuration UI.
62XB-Python-Version: ${python:Versions}
63
64Package: landscape-client-ui-install
65Architecture: any
66Depends: ${python:Depends}, ${misc:Depends},
67 python-gi,
68 python-dbus,
69 policykit-1,
70 gir1.2-gtk-3.0,
71 python-aptdaemon.gtk3widgets
72Description: The Landscape administration system client - UI installer
73 Landscape is a web-based tool for managing Ubuntu systems.
74 .
75 This package provides an automatic installer for landscape-client-ui.
76XB-Python-Version: ${python:Versions}
077
=== added file 'debian/copyright'
--- debian/copyright 1970-01-01 00:00:00 +0000
+++ debian/copyright 2012-04-22 14:14:27 +0000
@@ -0,0 +1,36 @@
1This package was debianized by
2 * Jamshed Kakar <jamshed.kakar@canonical.com> on Wed, 28 Jun 2006
3 * Rick Clark <rick.clark@canonical.com> in Aug 2008
4 * Dustin Kirkland <kirkland@canonical.com> in Aug 2008
5
6 Copyright (C) 2006-2008 Canonical Ltd.
7
8License:
9
10Upstream source is located at: https://code.launchpad.net/landscape-client
11
12
13Copyright:
14
15The packaging of this software and the programs in this package are distributed
16under the terms of the GNU General Public License, version 2 as distributed by
17the Free Software Foundation.
18
19License:
20 Copyright (C) 2006-2008 Canonical Ltd.
21
22 This program is free software: you can redistribute it and/or modify
23 it under the terms of the GNU General Public License version 2,
24 as published by the Free Software Foundation.
25
26 This program is distributed in the hope that it will be useful,
27 but WITHOUT ANY WARRANTY; without even the implied warranty of
28 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 GNU General Public License for more details.
30
31 You should have received a copy of the GNU General Public License
32 along with this program. If not, see <http://www.gnu.org/licenses/>.
33
34On Debian systems, the complete text of the GNU General
35Public License can be found in `/usr/share/common-licenses/GPL-2'.
36
037
=== added file 'debian/landscape-client-ui-install.install'
--- debian/landscape-client-ui-install.install 1970-01-01 00:00:00 +0000
+++ debian/landscape-client-ui-install.install 2012-04-22 14:14:27 +0000
@@ -0,0 +1,4 @@
1usr/bin/landscape-client-ui-install
2usr/share/applications/landscape-client-settings.desktop
3usr/share/icons/hicolor/scalable/apps/preferences-management-service.svg
4usr/share/locale
05
=== added file 'debian/landscape-client-ui.install'
--- debian/landscape-client-ui.install 1970-01-01 00:00:00 +0000
+++ debian/landscape-client-ui.install 2012-04-22 14:14:27 +0000
@@ -0,0 +1,9 @@
1usr/bin/landscape-client-settings-mechanism
2usr/bin/landscape-client-registration-mechanism
3usr/bin/landscape-client-settings-ui
4usr/share/dbus-1/system-services/com.canonical.LandscapeClientSettings.service
5usr/share/dbus-1/system-services/com.canonical.LandscapeClientRegistration.service
6usr/share/polkit-1/actions/com.canonical.LandscapeClientSettings.policy
7etc/dbus-1/system.d/com.canonical.LandscapeClientSettings.conf
8etc/dbus-1/system.d/com.canonical.LandscapeClientRegistration.conf
9usr/share/glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml
010
=== added file 'debian/landscape-client.config'
--- debian/landscape-client.config 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.config 2012-04-22 14:14:27 +0000
@@ -0,0 +1,64 @@
1#!/bin/sh
2
3PACKAGE=landscape-client
4
5CONFIGFILE=/etc/landscape/client.conf
6set -e
7. /usr/share/debconf/confmodule
8
9var_in_file() {
10 var="$1"
11 file="$2"
12 line=$(grep "^$var\s*=\s*" "$file" 2>/dev/null || true)
13 echo "$line"
14}
15
16get_var_from_file() {
17 var="$1"
18 file="$2"
19 val=$(grep "^$var\s*=\s*" "$file" 2>/dev/null | tail -n1 | sed "s/^.*=\s*//")
20 echo "$val"
21}
22
23update_var() {
24 var="$1"
25 file="$2"
26 line=$(var_in_file $var $file)
27 if [ -n "$line" ]; then
28 val=$(get_var_from_file $var $file)
29 # Store value from config file in debconf.
30 db_set $PACKAGE/$var $val
31 fi
32}
33
34# Load config file, if it exists.
35if [ -e $CONFIGFILE ]; then
36 # Config file is "ini" type, not shell, so we cannot source it
37 # If a setting is defined in the config file, update it in debconf
38 # db.
39 update_var "computer_title" "$CONFIGFILE"
40 update_var "account_name" "$CONFIGFILE"
41 update_var "registration_password" "$CONFIGFILE"
42 update_var "url" "$CONFIGFILE"
43 update_var "exchange_interval" "$CONFIGFILE"
44 update_var "urgent_exchange_interval" "$CONFIGFILE"
45 update_var "ping_url" "$CONFIGFILE"
46 update_var "ping_interval" "$CONFIGFILE"
47 update_var "http_proxy" "$CONFIGFILE"
48 update_var "https_proxy" "$CONFIGFILE"
49 update_var "tags" "$CONFIGFILE"
50fi
51
52# Ask questions.
53# Do debconf configuration
54db_get $PACKAGE/register_system
55if [ "$RET" = true ]; then
56 priority=high
57else
58 priority=medium
59fi
60db_input "$priority" $PACKAGE/computer_title || true
61db_input "$priority" $PACKAGE/account_name || true
62db_input "$priority" $PACKAGE/registration_password || true
63
64db_go || true
065
=== added file 'debian/landscape-client.docs'
--- debian/landscape-client.docs 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.docs 2012-04-22 14:14:27 +0000
@@ -0,0 +1,1 @@
1README
02
=== added file 'debian/landscape-client.init'
--- debian/landscape-client.init 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.init 2012-04-22 14:14:27 +0000
@@ -0,0 +1,112 @@
1#!/bin/sh
2
3### BEGIN INIT INFO
4# Provides: landscape-client
5# Required-Start: $local_fs $remote_fs
6# Required-Stop: $local_fs $remote_fs
7# Default-Start: 2 3 4 5
8# Default-Stop: 0 1 6
9# Short-Description: Landscape client daemons
10# Description: The Landscape client daemons are needed so the
11# Landscape server can manage a computer.
12### END INIT INFO
13
14LANDSCAPE_DEFAULTS=/etc/default/landscape-client
15NAME=landscape-client
16DAEMON=/usr/bin/$NAME
17PIDDIR=/var/run/landscape
18SOCKETDIR=/var/lib/landscape/client/sockets
19PIDFILE=$PIDDIR/$NAME.pid
20RUN=0 # overridden in /etc/default/landscape-client
21CLOUD=0 # overridden in /etc/default/landscape-client
22DAEMON_GROUP=landscape
23export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
24
25[ -f $DAEMON ] || exit 0
26
27. /lib/lsb/init-functions
28[ -f $LANDSCAPE_DEFAULTS ] && . $LANDSCAPE_DEFAULTS
29
30check_config () {
31 # This $RUN check should match the semantics of
32 # l.sysvconfig.SysVConfig.is_configured_to_run.
33 if [ $RUN -eq 0 ]; then
34 if [ $CLOUD -eq 1 ]; then
35 if landscape-is-cloud-managed; then
36 # Install the cloud default configuration file
37 cp /usr/share/landscape/cloud-default.conf /etc/landscape/client.conf
38 # Override default file for not going in this conditional again at
39 # next startup
40 sed -i "s/^RUN=.*/RUN=1/" $LANDSCAPE_DEFAULTS
41 if ! grep -q "^RUN=" $LANDSCAPE_DEFAULTS; then
42 echo "RUN=1" >> $LANDSCAPE_DEFAULTS
43 fi
44 else
45 echo "$NAME is not configured, please run landscape-config."
46 exit 0
47 fi
48 else
49 echo "$NAME is not configured, please run landscape-config."
50 exit 0
51 fi
52 fi
53}
54
55case "$1" in
56 start)
57 check_config
58 log_daemon_msg "Starting the $NAME daemon"
59 if [ ! -e $PIDDIR ]; then
60 mkdir $PIDDIR
61 chown landscape $PIDDIR
62 fi
63 # Cleanup leftover sockets if there's no other landscape process
64 # running. This shouldn't be usually necessary, but it can
65 # happen in case the client crashed badly and the socket points
66 # to a process with the same PID.
67 if [ -d "${SOCKETDIR:?}" ]; then
68 if ! pidofproc -p "$PIDFILE" "$DAEMON" > /dev/null; then
69 find "${SOCKETDIR:?}" -maxdepth 1 -type s -print0 | xargs -r0 rm -f
70 find "${SOCKETDIR:?}" -maxdepth 1 -type l -print0 | xargs -r0 rm -f
71 fi
72 fi
73
74 FULL_COMMAND="start-stop-daemon --start --quiet --oknodo --startas $DAEMON --pidfile $PIDFILE -g $DAEMON_GROUP -- --daemon --pid-file $PIDFILE"
75 if [ x"$DAEMON_USER" != x ]; then
76 sudo -u $DAEMON_USER $FULL_COMMAND
77 else
78 $FULL_COMMAND
79 fi
80 log_end_msg $?
81 ;;
82
83 stop)
84 log_daemon_msg "Stopping $NAME daemon"
85 start-stop-daemon --retry 30 --stop --quiet --pidfile $PIDFILE
86 log_end_msg $?
87 ;;
88
89 status)
90 # We want to maintain backward compatibility with Dapper,
91 # so we're not going to use status_of_proc()
92 pidofproc -p $PIDFILE $DAEMON >/dev/null
93 status=$?
94 if [ $status -eq 0 ]; then
95 log_success_msg "$NAME is running"
96 else
97 log_failure_msg "$NAME is not running"
98 fi
99 exit $status
100 ;;
101
102 restart|force-reload)
103 $0 stop && $0 start
104 ;;
105
106 *)
107 echo "Usage: $0 {start|stop|status|restart|force-reload}"
108 exit 1
109 ;;
110esac
111
112exit 0
0113
=== added file 'debian/landscape-client.install'
--- debian/landscape-client.install 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.install 2012-04-22 14:14:27 +0000
@@ -0,0 +1,14 @@
1usr/bin/landscape-broker
2usr/bin/landscape-client
3usr/bin/landscape-config
4usr/bin/landscape-manager
5usr/bin/landscape-message
6usr/bin/landscape-monitor
7usr/bin/landscape-package-changer
8usr/bin/landscape-package-reporter
9usr/bin/landscape-release-upgrader
10usr/bin/landscape-is-cloud-managed
11usr/bin/landscape-dbus-proxy
12usr/share/landscape/cloud-default.conf
13etc/dbus-1/system.d/landscape.conf
14usr/lib/landscape
015
=== added file 'debian/landscape-client.logrotate'
--- debian/landscape-client.logrotate 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.logrotate 2012-04-22 14:14:27 +0000
@@ -0,0 +1,20 @@
1/var/log/landscape/watchdog.log /var/log/landscape/monitor.log /var/log/landscape/broker.log /var/log/landscape/manager.log {
2 weekly
3 rotate 4
4 missingok
5 notifempty
6 compress
7 nocreate
8 postrotate
9 [ -f /var/run/landscape/landscape-client.pid ] && kill -s USR1 `cat /var/run/landscape/landscape-client.pid` > /dev/null 2>&1 || :
10 endscript
11}
12
13/var/log/landscape/package-changer.log /var/log/landscape/package-reporter.log /var/log/landscape/sysinfo.log /var/log/landscape/release-upgrader.log {
14 weekly
15 rotate 4
16 missingok
17 notifempty
18 compress
19 nocreate
20}
021
=== added file 'debian/landscape-client.postinst'
--- debian/landscape-client.postinst 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.postinst 2012-04-22 14:14:27 +0000
@@ -0,0 +1,150 @@
1#!/bin/sh
2set -e
3
4# summary of how this script can be called:
5# * <postinst> `configure' <most-recently-configured-version>
6# * <old-postinst> `abort-upgrade' <new version>
7# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
8# <new-version>
9# * <postinst> `abort-remove'
10# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
11# <failed-install-package> <version> `removing'
12# <conflicting-package> <version>
13# for details, see http://www.debian.org/doc/debian-policy/ or
14# the debian-policy package
15
16. /usr/share/debconf/confmodule
17trap "db_stop || true" EXIT HUP INT QUIT TERM
18
19PACKAGE=landscape-client
20
21# Use the default installed Python. Running just "python" might run
22# something from /usr/local/bin, which doesn't necessarily support
23# running the landscape client.
24PYTHON=/usr/bin/python
25
26case "$1" in
27 configure)
28
29 CONFIG_FILE=/etc/landscape/client.conf
30 if [ ! -f $CONFIG_FILE ]; then
31 # Create new configuration, with private mode
32 TEMPFILE=$(mktemp -p /etc/landscape)
33 cat > $TEMPFILE <<END
34[client]
35log_level = info
36url = https://landscape.canonical.com/message-system
37ping_url = http://landscape.canonical.com/ping
38data_path = /var/lib/landscape/client
39END
40 chown landscape $TEMPFILE
41 mv $TEMPFILE $CONFIG_FILE
42
43 # Get configuration values from debconf
44 db_get $PACKAGE/computer_title
45 COMPUTER_TITLE="${RET}"
46 db_get $PACKAGE/account_name
47 ACCOUNT_NAME="${RET}"
48 db_get $PACKAGE/registration_password
49 REGISTRATION_PASSWORD="${RET}"
50 db_get $PACKAGE/url
51 URL="${RET}"
52 db_get $PACKAGE/exchange_interval
53 EXCHANGE_INTERVAL="${RET}"
54 db_get $PACKAGE/urgent_exchange_interval
55 URGENT_EXCHANGE_INTERVAL="${RET}"
56 db_get $PACKAGE/ping_url
57 PING_URL="${RET}"
58 db_get $PACKAGE/ping_interval
59 PING_INTERVAL="${RET}"
60 db_get $PACKAGE/http_proxy
61 HTTP_PROXY="${RET}"
62 db_get $PACKAGE/https_proxy
63 HTTPS_PROXY="${RET}"
64 db_get $PACKAGE/tags
65 TAGS="${RET}"
66
67 # If we got the needed information, actually do the registration.
68 if [ -n "$ACCOUNT_NAME" -a -n "$COMPUTER_TITLE" ]; then
69 landscape-config --silent --ok-no-register \
70 --computer-title "$COMPUTER_TITLE" \
71 --account-name "$ACCOUNT_NAME" \
72 --registration-password "$REGISTRATION_PASSWORD" \
73 --url "$URL" \
74 --exchange-interval "$EXCHANGE_INTERVAL" \
75 --urgent-exchange-interval "$URGENT_EXCHANGE_INTERVAL" \
76 --ping-url "$PING_URL" \
77 --ping-interval "$PING_INTERVAL" \
78 --http-proxy "$HTTP_PROXY" \
79 --https-proxy "$HTTPS_PROXY" \
80 --tags "$TAGS"
81 fi
82 else
83 # Fix non-private permissions
84 chmod 0600 $CONFIG_FILE
85 fi
86
87 # old monolithic clients have a single persist data file and a single
88 # package hash db. This data should be migrated to the new format
89 # where each service has a persist and the package data is kept in a
90 # sqlite database.
91
92 DATA_BPICKLE=$DATA_DIR/client/data.bpickle
93 BROKER_BPICKLE=$DATA_DIR/client/broker.bpickle
94
95 if [ -f $DATA_BPICKLE -a ! -f $BROKER_BPICKLE ]; then
96 $PYTHON -c "from landscape.upgraders import legacy; legacy.migrate_data_file('$DATA_DIR/client')"
97 mv $DATA_BPICKLE $DATA_BPICKLE.migrated
98 echo "Old monolithic client data file migrated to new format."
99 fi
100
101 # Remove statoverride for smart-update, if there's one
102 smart_update=/usr/lib/landscape/smart-update
103 if dpkg-statoverride --list $smart_update >/dev/null 2>&1; then
104 dpkg-statoverride --remove $smart_update
105 fi
106
107 # Add the setuid flag to apt-update, and make it be executable by
108 # users in the landscape group (that normally means landscape itself)
109 apt_update=/usr/lib/landscape/apt-update
110 if ! dpkg-statoverride --list $apt_update >/dev/null 2>&1; then
111 dpkg-statoverride --update --add root landscape 4754 $apt_update
112 fi
113
114 # Remove old cron jobs
115 old_cron_job=/etc/cron.hourly/landscape-client
116 if [ -e $old_cron_job ]; then
117 rm $old_cron_job
118 fi
119 very_old_cron_job=/etc/cron.hourly/smartpm-core
120 if [ -e $very_old_cron_job ]; then
121 rm $very_old_cron_job
122 fi
123
124 # Check if we're upgrading from a D-Bus version
125 if ! [ -z $2 ]; then
126 if dpkg --compare-versions $2 lt 1.5.1; then
127 # Launch a proxy service that will forward requests over DBus
128 # from the old package-changer to the new AMP-based broker. This
129 # is a one-off only needed for the DBus->AMP upgrade
130 start-stop-daemon -x /usr/bin/landscape-dbus-proxy -b -c landscape -u landscape -S
131 fi
132 fi
133
134 ;;
135
136 abort-upgrade|abort-remove|abort-deconfigure)
137 ;;
138
139 *)
140 echo "postinst called with unknown argument \`$1'" >&2
141 exit 1
142 ;;
143esac
144
145# dh_installdeb will replace this with shell code automatically
146# generated by other debhelper scripts.
147
148#DEBHELPER#
149
150exit 0
0151
=== added file 'debian/landscape-client.postrm'
--- debian/landscape-client.postrm 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.postrm 2012-04-22 14:14:27 +0000
@@ -0,0 +1,50 @@
1#!/bin/sh
2set -e
3
4# summary of how this script can be called:
5# * <postrm> `remove'
6# * <postrm> `purge'
7# * <old-postrm> `upgrade' <new-version>
8# * <new-postrm> `failed-upgrade' <old-version>
9# * <new-postrm> `abort-install'
10# * <new-postrm> `abort-install' <old-version>
11# * <new-postrm> `abort-upgrade' <old-version>
12# * <disappearer's-postrm> `disappear' <overwriter>
13# <overwriter-version>
14# for details, see http://www.debian.org/doc/debian-policy/ or
15# the debian-policy package
16
17case "$1" in
18 purge)
19 LOG_DIR=/var/log/landscape
20 DATA_DIR=/var/lib/landscape
21
22 rm -f "/etc/default/landscape-client"
23
24 rm -f "${LOG_DIR}/manager.log"*
25 rm -f "${LOG_DIR}/monitor.log"*
26 rm -f "${LOG_DIR}/broker.log"*
27 rm -f "${LOG_DIR}/watchdog.log"*
28 rm -f "${LOG_DIR}/package-reporter.log"*
29 rm -f "${LOG_DIR}/package-changer.log"*
30
31 rm -rf "${DATA_DIR}/client"
32 rm -rf "${DATA_DIR}/.gnupg"
33
34 ;;
35
36 remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
37 ;;
38
39 *)
40 echo "postrm called with unknown argument \`$1'" >&2
41 exit 1
42 ;;
43esac
44
45# dh_installdeb will replace this with shell code automatically
46# generated by other debhelper scripts.
47
48#DEBHELPER#
49
50exit 0
051
=== added file 'debian/landscape-client.prerm'
--- debian/landscape-client.prerm 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.prerm 2012-04-22 14:14:27 +0000
@@ -0,0 +1,45 @@
1#!/bin/sh
2# prerm script for landscape-client
3#
4# see: dh_installdeb(1)
5
6set -e
7
8# summary of how this script can be called:
9# * <prerm> `remove'
10# * <old-prerm> `upgrade' <new-version>
11# * <new-prerm> `failed-upgrade' <old-version>
12# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
13# * <deconfigured's-prerm> `deconfigure' `in-favour'
14# <package-being-installed> <version> `removing'
15# <conflicting-package> <version>
16# for details, see http://www.debian.org/doc/debian-policy/ or
17# the debian-policy package
18
19
20case "$1" in
21 remove|upgrade|deconfigure)
22
23 # Remove statoverride for apt-update
24 apt_update=/usr/lib/landscape/apt-update
25 if dpkg-statoverride --list $apt_update >/dev/null 2>&1; then
26 dpkg-statoverride --remove $apt_update
27 fi
28
29 ;;
30
31 failed-upgrade)
32 ;;
33
34 *)
35 echo "prerm called with unknown argument \`$1'" >&2
36 exit 1
37 ;;
38esac
39
40# dh_installdeb will replace this with shell code automatically
41# generated by other debhelper scripts.
42
43#DEBHELPER#
44
45exit 0
046
=== added file 'debian/landscape-client.templates'
--- debian/landscape-client.templates 1970-01-01 00:00:00 +0000
+++ debian/landscape-client.templates 2012-04-22 14:14:27 +0000
@@ -0,0 +1,77 @@
1Template: landscape-client/computer_title
2Type: string
3_Description: Computer Title:
4 Descriptive text to identify this computer uniquely in the
5 Landscape user interface.
6
7Template: landscape-client/account_name
8Type: string
9_Description: Account Name:
10 Short lowercase identifier of the Landscape account this computer
11 will be assigned.
12
13Template: landscape-client/registration_password
14Type: password
15_Description: Registration Password:
16 Client registration password for the given Landscape account. Only
17 needed if the given account is requesting a client registration
18 password.
19
20Template: landscape-client/url
21Type: string
22Default: https://landscape.canonical.com/message-system
23_Description: Landscape Server URL:
24 The server URL to connect to.
25
26Template: landscape-client/exchange_interval
27Type: string
28Default: 900
29_Description: Message Exchange Interval:
30 Interval, in seconds, between normal message exchanges with the Landscape
31 server.
32
33Template: landscape-client/urgent_exchange_interval
34Type: string
35Default: 60
36_Description: Urgent Message Exchange Interval:
37 Interval, in seconds, between urgent message exchanges with the Landscape
38 server.
39
40Template: landscape-client/ping_url
41Type: string
42Default: http://landscape.canonical.com/ping
43_Description: Landscape PingServer URL:
44 The URL to perform lightweight exchange initiation with.
45
46Template: landscape-client/ping_interval
47Type: string
48Default: 30
49_Description: Ping Interval:
50 Interval, in seconds, between client ping exchanges with the Landscape server.
51
52Template: landscape-client/http_proxy
53Type: string
54Default:
55_Description: HTTP proxy (blank for none):
56 The URL of the HTTP proxy, if one is needed.
57
58Template: landscape-client/https_proxy
59Type: string
60Default:
61_Description: HTTPS proxy (blank for none):
62 The URL of the HTTPS proxy, if one is needed.
63
64Template: landscape-client/tags
65Type: string
66Default:
67_Description: Initial tags for first registration
68 Comma separated list of tags which will be assigned to this computer on its
69 first registration. Once the machine is registered, these tags can only be
70 changed using the Landscape server.
71
72Template: landscape-client/register_system
73Type: boolean
74Default: false
75_Description: Register this system with the Landscape server?
76 Register this system with a preexisting Landscape account. Please
77 go to http://landscape.canonical.com if you need a Landscape account.
078
=== added file 'debian/landscape-common.config'
--- debian/landscape-common.config 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.config 2012-04-22 14:14:27 +0000
@@ -0,0 +1,10 @@
1#!/bin/sh
2
3PACKAGE=landscape-common
4
5set -e
6. /usr/share/debconf/confmodule
7
8# Ask questions.
9db_input medium $PACKAGE/sysinfo || true
10db_go
011
=== added file 'debian/landscape-common.dirs'
--- debian/landscape-common.dirs 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.dirs 2012-04-22 14:14:27 +0000
@@ -0,0 +1,1 @@
1etc/update-motd.d
02
=== added file 'debian/landscape-common.install'
--- debian/landscape-common.install 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.install 2012-04-22 14:14:27 +0000
@@ -0,0 +1,3 @@
1usr/lib/python*
2usr/bin/landscape-sysinfo
3usr/share/landscape/landscape-sysinfo.wrapper
04
=== added file 'debian/landscape-common.postinst'
--- debian/landscape-common.postinst 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.postinst 2012-04-22 14:14:27 +0000
@@ -0,0 +1,107 @@
1#!/bin/sh
2set -e
3
4# summary of how this script can be called:
5# * <postinst> `configure' <most-recently-configured-version>
6# * <old-postinst> `abort-upgrade' <new version>
7# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
8# <new-version>
9# * <postinst> `abort-remove'
10# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
11# <failed-install-package> <version> `removing'
12# <conflicting-package> <version>
13# for details, see http://www.debian.org/doc/debian-policy/ or
14# the debian-policy package
15
16. /usr/share/debconf/confmodule
17trap "db_stop || true" EXIT HUP INT QUIT TERM
18
19PACKAGE=landscape-common
20
21# Use the default installed Python. Running just "python" might run
22# something from /usr/local/bin, which doesn't necessarily support
23# running the landscape client.
24PYTHON=/usr/bin/python
25
26case "$1" in
27 configure)
28
29 db_get $PACKAGE/sysinfo
30 # Choices:
31 # * Do not display sysinfo on login
32 # * Cache sysinfo in /etc/motd
33 # * Run sysinfo on every login
34 SYSINFO="${RET:-Cache sysinfo in /etc/motd}"
35 WRAPPER=/usr/share/landscape/landscape-sysinfo.wrapper
36 PROFILE_LOCATION=/etc/profile.d/50-landscape-sysinfo.sh
37 UPDATE_MOTD_LOCATION=/etc/update-motd.d/50-landscape-sysinfo
38 if [ "$RET" = "Cache sysinfo in /etc/motd" ]; then
39 rm -f $PROFILE_LOCATION 2>/dev/null || true
40 ln -sf $WRAPPER $UPDATE_MOTD_LOCATION
41 /usr/sbin/update-motd 2>/dev/null || true
42 elif [ "$RET" = "Run sysinfo on every login" ]; then
43 rm -f $UPDATE_MOTD_LOCATION 2>/dev/null || true
44 /usr/sbin/update-motd 2>/dev/null || true
45 ln -sf $WRAPPER $PROFILE_LOCATION
46 else
47 rm -f $UPDATE_MOTD_LOCATION 2>/dev/null || true
48 /usr/sbin/update-motd 2>/dev/null || true
49 rm -f $PROFILE_LOCATION || true
50 fi
51
52 # 0.9.1 introduces non-backwards compatible changes. This detects
53 # whether or not the data is in the current format. If not, all
54 # existing data is removed.
55 DATA_DIR=/var/lib/landscape
56
57 if [ -d $DATA_DIR/data ]; then
58 rm -rf $DATA_DIR/*
59 elif [ -f $DATA_DIR/client/data.bpickle ]; then
60 LAST_BYTE=`sed -n '$,$s/.*\(.\)/\1/p' $DATA_DIR/client/data.bpickle`
61 if [ "$LAST_BYTE" = e ]; then
62 rm -rf $DATA_DIR/*
63 fi
64 fi
65
66 # Create landscape system user
67 if ! getent passwd landscape >/dev/null; then
68 adduser --quiet --system --group --disabled-password \
69 --home /var/lib/landscape --no-create-home landscape
70 fi
71
72 # Create landscape system group (for <= 1.0.29.1-0ubuntu0.9.04.0)
73 if ! getent group landscape >/dev/null; then
74 addgroup --quiet --system landscape
75 fi
76
77 # Ensure primary group is landscape (for <= 1.0.29.1-0ubuntu0.9.04.0)
78 if ! usermod -g landscape landscape > /dev/null 2>&1; then
79 echo "ERROR: usermod -g landscape landscape failed."
80 fi
81
82 # Fix prior ownerships, we exclude the custom-graph-scripts directory
83 # because there might script-generated files that we want to preserve
84 # the ownership of.
85 if [ -d /var/lib/landscape/client ]; then
86 find /var/lib/landscape/client/ -wholename /var/lib/landscape/client/custom-graph-scripts -prune -or -exec chown landscape {} \; > /dev/null 2>&1
87 fi
88 [ -d /var/lib/landscape/.gnupg ] && chown -R landscape /var/lib/landscape/.gnupg || :
89 chown -R landscape /var/log/landscape
90
91 ;;
92
93 abort-upgrade|abort-remove|abort-deconfigure)
94 ;;
95
96 *)
97 echo "postinst called with unknown argument \`$1'" >&2
98 exit 1
99 ;;
100esac
101
102# dh_installdeb will replace this with shell code automatically
103# generated by other debhelper scripts.
104
105#DEBHELPER#
106
107exit 0
0108
=== added file 'debian/landscape-common.postrm'
--- debian/landscape-common.postrm 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.postrm 2012-04-22 14:14:27 +0000
@@ -0,0 +1,40 @@
1#!/bin/sh
2set -e
3
4# summary of how this script can be called:
5# * <postrm> `remove'
6# * <postrm> `purge'
7# * <old-postrm> `upgrade' <new-version>
8# * <new-postrm> `failed-upgrade' <old-version>
9# * <new-postrm> `abort-install'
10# * <new-postrm> `abort-install' <old-version>
11# * <new-postrm> `abort-upgrade' <old-version>
12# * <disappearer's-postrm> `disappear' <overwriter>
13# <overwriter-version>
14# for details, see http://www.debian.org/doc/debian-policy/ or
15# the debian-policy package
16
17case "$1" in
18 purge)
19 LOG_DIR=/var/log/landscape
20 CONFIG_FILE=/etc/landscape/client.conf
21 deluser --quiet --system landscape >/dev/null || true
22 rm -f "${LOG_DIR}/sysinfo.log"*
23 rm -f "${CONFIG_FILE}"
24 ;;
25
26 remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
27 ;;
28
29 *)
30 echo "postrm called with unknown argument \`$1'" >&2
31 exit 1
32 ;;
33esac
34
35# dh_installdeb will replace this with shell code automatically
36# generated by other debhelper scripts.
37
38#DEBHELPER#
39
40exit 0
041
=== added file 'debian/landscape-common.prerm'
--- debian/landscape-common.prerm 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.prerm 2012-04-22 14:14:27 +0000
@@ -0,0 +1,41 @@
1#!/bin/sh
2# prerm script for landscape-common
3#
4# see: dh_installdeb(1)
5
6set -e
7
8# summary of how this script can be called:
9# * <prerm> `remove'
10# * <old-prerm> `upgrade' <new-version>
11# * <new-prerm> `failed-upgrade' <old-version>
12# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
13# * <deconfigured's-prerm> `deconfigure' `in-favour'
14# <package-being-installed> <version> `removing'
15# <conflicting-package> <version>
16# for details, see http://www.debian.org/doc/debian-policy/ or
17# the debian-policy package
18
19
20case "$1" in
21 remove|upgrade|deconfigure)
22 rm -f /etc/update-motd.d/50-landscape-sysinfo 2>/dev/null || true
23 /usr/sbin/update-motd 2>/dev/null || true
24 rm -f /etc/profile.d/landscape-sysinfo.sh 2>/dev/null || true
25 ;;
26
27 failed-upgrade)
28 ;;
29
30 *)
31 echo "prerm called with unknown argument \`$1'" >&2
32 exit 1
33 ;;
34esac
35
36# dh_installdeb will replace this with shell code automatically
37# generated by other debhelper scripts.
38
39#DEBHELPER#
40
41exit 0
042
=== added file 'debian/landscape-common.templates'
--- debian/landscape-common.templates 1970-01-01 00:00:00 +0000
+++ debian/landscape-common.templates 2012-04-22 14:14:27 +0000
@@ -0,0 +1,20 @@
1Template: landscape-common/sysinfo
2Type: select
3# Translators beware! the following three strings form a single
4# Choices menu. - Every one of these strings has to fit in a standard
5# 80 characters console, as the fancy screen setup takes up some space
6# try to keep below ~71 characters.
7# DO NOT USE commas (,) in Choices translations otherwise
8# this will break the choices shown to users
9_Choices: Do not display sysinfo on login, Cache sysinfo in /etc/motd, Run sysinfo on every login
10Default: Cache sysinfo in /etc/motd
11_Description: landscape-sysinfo configuration:
12 Landscape includes a tool and a set of modules that can display
13 system status, information, and statistics on login.
14 .
15 This information can be gathered periodically (every 10 minutes)
16 and automatically written to /etc/motd. The data could be a few
17 minutes out-of-date.
18 .
19 Or, this information can be gathered at login. The data will be
20 more current, but might introduce a small delay at login.
021
=== added file 'debian/landscape-sysinfo.wrapper'
--- debian/landscape-sysinfo.wrapper 1970-01-01 00:00:00 +0000
+++ debian/landscape-sysinfo.wrapper 2012-04-22 14:14:27 +0000
@@ -0,0 +1,14 @@
1#!/bin/sh
2cores=$(grep -c ^processor /proc/cpuinfo 2>/dev/null)
3[ "$cores" -eq "0" ] && cores=1
4threshold="${cores:-1}.0"
5if [ $(echo "`cut -f1 -d ' ' /proc/loadavg` < $threshold" | bc) -eq 1 ]; then
6 echo
7 echo -n " System information as of "
8 /bin/date
9 echo
10 /usr/bin/landscape-sysinfo
11else
12 echo
13 echo " System information disabled due to load higher than $threshold"
14fi
015
=== added directory 'debian/po'
=== added file 'debian/po/POTFILES.in'
--- debian/po/POTFILES.in 1970-01-01 00:00:00 +0000
+++ debian/po/POTFILES.in 2012-04-22 14:14:27 +0000
@@ -0,0 +1,2 @@
1[type: gettext/rfc822deb] landscape-client.templates
2[type: gettext/rfc822deb] landscape-common.templates
03
=== added file 'debian/po/templates.pot'
--- debian/po/templates.pot 1970-01-01 00:00:00 +0000
+++ debian/po/templates.pot 2012-04-22 14:14:27 +0000
@@ -0,0 +1,224 @@
1# SOME DESCRIPTIVE TITLE.
2# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3# This file is distributed under the same license as the PACKAGE package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5#
6#, fuzzy
7msgid ""
8msgstr ""
9"Project-Id-Version: PACKAGE VERSION\n"
10"Report-Msgid-Bugs-To: landscape-client@packages.debian.org\n"
11"POT-Creation-Date: 2012-03-07 17:07+0100\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
15"Language: \n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=CHARSET\n"
18"Content-Transfer-Encoding: 8bit\n"
19
20#. Type: string
21#. Description
22#: ../landscape-client.templates:1001
23msgid "Computer Title:"
24msgstr ""
25
26#. Type: string
27#. Description
28#: ../landscape-client.templates:1001
29msgid ""
30"Descriptive text to identify this computer uniquely in the Landscape user "
31"interface."
32msgstr ""
33
34#. Type: string
35#. Description
36#: ../landscape-client.templates:2001
37msgid "Account Name:"
38msgstr ""
39
40#. Type: string
41#. Description
42#: ../landscape-client.templates:2001
43msgid ""
44"Short lowercase identifier of the Landscape account this computer will be "
45"assigned."
46msgstr ""
47
48#. Type: password
49#. Description
50#: ../landscape-client.templates:3001
51msgid "Registration Password:"
52msgstr ""
53
54#. Type: password
55#. Description
56#: ../landscape-client.templates:3001
57msgid ""
58"Client registration password for the given Landscape account. Only needed "
59"if the given account is requesting a client registration password."
60msgstr ""
61
62#. Type: string
63#. Description
64#: ../landscape-client.templates:4001
65msgid "Landscape Server URL:"
66msgstr ""
67
68#. Type: string
69#. Description
70#: ../landscape-client.templates:4001
71msgid "The server URL to connect to."
72msgstr ""
73
74#. Type: string
75#. Description
76#: ../landscape-client.templates:5001
77msgid "Message Exchange Interval:"
78msgstr ""
79
80#. Type: string
81#. Description
82#: ../landscape-client.templates:5001
83msgid ""
84"Interval, in seconds, between normal message exchanges with the Landscape "
85"server."
86msgstr ""
87
88#. Type: string
89#. Description
90#: ../landscape-client.templates:6001
91msgid "Urgent Message Exchange Interval:"
92msgstr ""
93
94#. Type: string
95#. Description
96#: ../landscape-client.templates:6001
97msgid ""
98"Interval, in seconds, between urgent message exchanges with the Landscape "
99"server."
100msgstr ""
101
102#. Type: string
103#. Description
104#: ../landscape-client.templates:7001
105msgid "Landscape PingServer URL:"
106msgstr ""
107
108#. Type: string
109#. Description
110#: ../landscape-client.templates:7001
111msgid "The URL to perform lightweight exchange initiation with."
112msgstr ""
113
114#. Type: string
115#. Description
116#: ../landscape-client.templates:8001
117msgid "Ping Interval:"
118msgstr ""
119
120#. Type: string
121#. Description
122#: ../landscape-client.templates:8001
123msgid ""
124"Interval, in seconds, between client ping exchanges with the Landscape "
125"server."
126msgstr ""
127
128#. Type: string
129#. Description
130#: ../landscape-client.templates:9001
131msgid "HTTP proxy (blank for none):"
132msgstr ""
133
134#. Type: string
135#. Description
136#: ../landscape-client.templates:9001
137msgid "The URL of the HTTP proxy, if one is needed."
138msgstr ""
139
140#. Type: string
141#. Description
142#: ../landscape-client.templates:10001
143msgid "HTTPS proxy (blank for none):"
144msgstr ""
145
146#. Type: string
147#. Description
148#: ../landscape-client.templates:10001
149msgid "The URL of the HTTPS proxy, if one is needed."
150msgstr ""
151
152#. Type: string
153#. Description
154#: ../landscape-client.templates:11001
155msgid "Initial tags for first registration"
156msgstr ""
157
158#. Type: string
159#. Description
160#: ../landscape-client.templates:11001
161msgid ""
162"Comma separated list of tags which will be assigned to this computer on its "
163"first registration. Once the machine is registered, these tags can only be "
164"changed using the Landscape server."
165msgstr ""
166
167#. Type: boolean
168#. Description
169#: ../landscape-client.templates:12001
170msgid "Register this system with the Landscape server?"
171msgstr ""
172
173#. Type: boolean
174#. Description
175#: ../landscape-client.templates:12001
176msgid ""
177"Register this system with a preexisting Landscape account. Please go to "
178"http://landscape.canonical.com if you need a Landscape account."
179msgstr ""
180
181#. Type: select
182#. Choices
183#. Translators beware! the following three strings form a single
184#. Choices menu. - Every one of these strings has to fit in a standard
185#. 80 characters console, as the fancy screen setup takes up some space
186#. try to keep below ~71 characters.
187#. DO NOT USE commas (,) in Choices translations otherwise
188#. this will break the choices shown to users
189#: ../landscape-common.templates:1001
190msgid ""
191"Do not display sysinfo on login, Cache sysinfo in /etc/motd, Run sysinfo on "
192"every login"
193msgstr ""
194
195#. Type: select
196#. Description
197#: ../landscape-common.templates:1002
198msgid "landscape-sysinfo configuration:"
199msgstr ""
200
201#. Type: select
202#. Description
203#: ../landscape-common.templates:1002
204msgid ""
205"Landscape includes a tool and a set of modules that can display system "
206"status, information, and statistics on login."
207msgstr ""
208
209#. Type: select
210#. Description
211#: ../landscape-common.templates:1002
212msgid ""
213"This information can be gathered periodically (every 10 minutes) and "
214"automatically written to /etc/motd. The data could be a few minutes out-of-"
215"date."
216msgstr ""
217
218#. Type: select
219#. Description
220#: ../landscape-common.templates:1002
221msgid ""
222"Or, this information can be gathered at login. The data will be more "
223"current, but might introduce a small delay at login."
224msgstr ""
0225
=== added file 'debian/pycompat'
--- debian/pycompat 1970-01-01 00:00:00 +0000
+++ debian/pycompat 2012-04-22 14:14:27 +0000
@@ -0,0 +1,1 @@
12
02
=== added file 'debian/rules'
--- debian/rules 1970-01-01 00:00:00 +0000
+++ debian/rules 2012-04-22 14:14:27 +0000
@@ -0,0 +1,128 @@
1#!/usr/bin/make -f
2
3dist_release := $(shell lsb_release -cs)
4ifneq ($(dist_release),dapper)
5 use_pycentral = yes
6endif
7ifeq (,$(filter $(dist_release), hardy lucid))
8 use_dhpython2 = yes
9endif
10
11dh_extra_flags = -plandscape-common -plandscape-client
12ifneq (,$(filter $(dist_release),precise))
13 # We want landscape-client-ui only from precise onward
14 dh_extra_flags += -plandscape-client-ui -plandscape-client-ui-install
15endif
16
17-include /usr/share/python/python.mk
18ifeq (,$(py_sitename))
19 py_sitename = site-packages
20 py_libdir = /usr/lib/python$(subst python,,$(1))/site-packages
21 py_sitename_sh = $(py_sitename)
22 py_libdir_sh = $(py_libdir)
23endif
24
25package = landscape-client
26root_dir = debian/tmp/
27
28revision = $(shell dpkg-parsechangelog | grep ^Version | cut -f 2 -d " "| cut -f 2 -d "-")
29
30landscape_common_substvars = debian/landscape-common.substvars
31landscape_client_substvars = debian/landscape-client.substvars
32
33build: build-stamp
34build-stamp:
35 dh_testdir
36 sed -i -e "s/^DEBIAN_REVISION = \"\"/DEBIAN_REVISION = \"-$(revision)\"/g" landscape/__init__.py
37 python setup.py build
38 make -C apt-update
39 touch build-stamp
40
41clean:
42 dh_testdir
43 dh_testroot
44 rm -f build-stamp
45 rm -rf build
46 make -C apt-update clean
47 dh_clean
48 debconf-updatepo
49 sed -i -e "s/^DEBIAN_REVISION = .*/DEBIAN_REVISION = \"\"/g" landscape/__init__.py
50
51install: build
52 dh_testdir
53 dh_testroot
54 dh_clean -k
55 dh_installdirs \
56 etc/landscape \
57 var/lib/landscape \
58 var/log/landscape \
59 usr/share/landscape
60
61 python setup.py install --root $(root_dir) $(py_setup_install_args)
62
63 install -D -o root -g root -m 755 debian/landscape-sysinfo.wrapper $(root_dir)/usr/share/landscape/landscape-sysinfo.wrapper
64 install -D -o root -g root -m 644 debian/cloud-default.conf $(root_dir)/usr/share/landscape/cloud-default.conf
65 install -D -o root -g root -m 755 apt-update/apt-update $(root_dir)/usr/lib/landscape/apt-update
66 install -D -o root -g root -m 644 dbus/landscape.conf $(root_dir)/etc/dbus-1/system.d/landscape.conf
67
68binary-indep:
69# do nothing
70#
71binary-arch: build install
72 # That's not present in Ubuntu releases we still support, so
73 # we're just installing the lintian overrides file by hand
74 # for now.
75 #dh_lintian
76 dh_testdir
77 dh_testroot
78 dh_installdocs
79 dh_installman -p landscape-client man/landscape-client.1 man/landscape-config.1 man/landscape-message.1
80 dh_installchangelogs
81 dh_install --sourcedir debian/tmp/
82 dh_installinit -- start 45 2 3 4 5 . stop 15 0 1 6 .
83 dh_installlogrotate
84 dh_installdebconf
85 dh_compress
86 dh_fixperms
87
88ifneq (,$(findstring $(dist_release),hardy))
89 # We depend on bug-fixed versions of python-dbus and pycurl on hardy
90 echo "extra:Depends=python-dbus" >> $(landscape_common_substvars)
91 echo "extra:Depends=python-pycurl, hal" >> $(landscape_client_substvars)
92 # The python-image-store-proxy package is needed for the eucalyptus plugin
93 echo "extra:Suggests=python-image-store-proxy" >> $(landscape_common_substvars)
94endif
95ifneq (,$(filter $(dist_release),lucid))
96 # We want libpam-modules in lucid
97 echo "extra:Depends=libpam-modules (>= 1.0.1-9ubuntu3), python-dbus" >> $(landscape_common_substvars)
98 echo "extra:Depends=python-pycurl, hal" >> $(landscape_client_substvars)
99endif
100ifeq (,$(filter $(dist_release),hardy lucid))
101 # Starting natty, no more hal or dbus
102 echo "extra:Depends=libpam-modules (>= 1.0.1-9ubuntu3)" >> $(landscape_common_substvars)
103 echo "extra:Depends=python-pycurl, gir1.2-gudev-1.0 (>= 165-0ubuntu2)" >> $(landscape_client_substvars)
104 echo "extra:Suggests=python-dbus, hal" >> $(landscape_client_substvars)
105endif
106
107ifeq ($(use_dhpython2),yes)
108 dh_python2 --no-guessing-versions
109else
110 ifeq ($(use_pycentral),yes)
111 ifneq (,$(py_setup_install_args))
112 DH_PYCENTRAL=include-links dh_pycentral
113 else
114 DH_PYCENTRAL=nomove dh_pycentral
115 endif
116 else
117 dh_python
118 endif
119endif
120 dh_installdeb $(dh_extra_flags)
121 dh_gencontrol $(dh_extra_flags)
122 dh_md5sums $(dh_extra_flags)
123 dh_builddeb $(dh_extra_flags)
124
125
126binary: binary-arch binary-indep
127
128.PHONY: binary binary-arch binary-indep clean
0129
=== added directory 'dev'
=== renamed directory 'dev' => 'dev.moved'
=== added file 'dev/dns-server'
--- dev/dns-server 1970-01-01 00:00:00 +0000
+++ dev/dns-server 2012-04-22 14:14:27 +0000
@@ -0,0 +1,99 @@
1#!/usr/bin/env python
2"""
3This script creates a DNS server that has enough functionality to test
4the server autodiscovery feature of landscape client.
5
6Landscape client uses /etc/resolv.conf to find the location of name servers.
7To have landscape client use this server, make sure that:
8
9nameserver 127.0.0.1
10
11is the first nameserver in /etc/resolv.conf. Linux name lookups only support
12port 53, so this program must run on port 53 in order to work. Be aware that
13NetworkManager overwrites this file any time your network configuration
14changes.
15
16This program does not return enough information for a tool like dig to complete
17successfully. If this is needed, use Bind 9, detailed at
18https://wiki.canonical.com/Landscape/SpecRegistry/0082
19"""
20
21import argparse
22import sys
23from twisted.internet import reactor, defer
24from twisted.names import dns, common
25from twisted.names.server import DNSServerFactory
26
27
28PORT = 5553
29SRV_RESPONSE = 'lds1.mylandscapehost.com'
30A_RESPONSE = '127.0.0.1'
31
32
33class SimpleResolver(common.ResolverBase):
34 def _lookup(self, name, cls, typ, timeout):
35 """
36 Respond to DNS requests. See documentation for
37 L{twisted.names.common.ResolverBase}.
38 """
39 # This nameserver returns the same result all the time, regardless
40 # of what name the client asks for.
41 results = []
42 ttl = 60
43 if typ == dns.SRV:
44 record = dns.Record_SRV(0, 1, 80, SRV_RESPONSE, ttl)
45 owner = '_landscape._tcp.mylandscapehost.com'
46 results.append(dns.RRHeader(owner, record.TYPE, dns.IN, ttl,
47 record, auth=True))
48 elif typ == dns.A:
49 record = dns.Record_A(A_RESPONSE)
50 owner = 'landscape.localdomain'
51 results.append(dns.RRHeader(owner, record.TYPE, dns.IN, ttl,
52 record, auth=True))
53
54 authority = []
55 return defer.succeed((results, authority, []))
56
57
58def parse_command_line(args):
59 global SRV_RESPONSE, A_RESPONSE, PORT
60 description = """
61 This test tool responds to DNS queries for SRV and A records. It always
62 responds with the same result regardless of the query string sent by the
63 client.
64
65 To test this tool, try the following commands:
66 dig -p 5553 @127.0.0.1 SRV _landscape._tcp.mylandscapehost.com
67
68 dig -p 5553 @127.0.0.1 localhost.localdomain
69 """
70 parser = argparse.ArgumentParser(description=description)
71 parser.add_argument("--srv-response", type=str, default=SRV_RESPONSE,
72 help="Give this reply to SRV queries (eg: localhost)")
73 parser.add_argument("--a-response", type=str, default=A_RESPONSE,
74 help="Give this reply to A queries (eg: 127.0.0.1)")
75 parser.add_argument("--port", type=int, default=PORT,
76 help="Listen on this port (default 5553). DNS "
77 "normally runs on port 53")
78
79 args = vars(parser.parse_args())
80 SRV_RESPONSE = args["srv_response"]
81 A_RESPONSE = args["a_response"]
82 PORT = args["port"]
83
84
85def main():
86 parse_command_line(sys.argv)
87
88 simple_resolver = SimpleResolver()
89 factory = DNSServerFactory(authorities=[simple_resolver], verbose=1)
90 protocol = dns.DNSDatagramProtocol(factory)
91 print "starting reactor on port %s.." % PORT
92 reactor.listenTCP(PORT, factory)
93 reactor.listenUDP(PORT, protocol)
94 reactor.run()
95 print "reactor stopped..."
96
97
98if __name__ == "__main__":
99 main()
0100
=== added file 'dev/landscape-client-vm'
--- dev/landscape-client-vm 1970-01-01 00:00:00 +0000
+++ dev/landscape-client-vm 2012-04-22 14:14:27 +0000
@@ -0,0 +1,178 @@
1#!/bin/sh -e
2
3help () {
4 cat <<EOF
5$0 [OPTION] ... <release>: build a landscape-client VM
6for the specified release. Available options:
7
8 -m, --mirror <mirror> The Ubuntu mirror to use to build the VM, and
9 for the APT sources inside the VM itself.
10 If you want to use apt-proxy, you have to
11 modify the apt-proxy-v2.conf file to make
12 apt-proxy listen to your actual network
13 interface address, instead of the loopback one.
14 For example:
15 ;; Server IP to listen on
16 address = 192.168.1.162
17 -s, --server <host> The hostname of the Landscape server the client
18 should connect to.
19 -a, --account <account> The name of the Landscape account to use.
20 -p, --password <password> The password for the Landscape account.
21 -P, --profile <profile> Package profile to use, can be server or
22 desktop.
23 -k, --ssl-key <key> Specify an SSL key to be used in the client
24 config.
25 -r, --repository <ppa> Specify the PPA holding the client packages.
26 -b, --build <yes|no> If yes, the landscape-client packages from this
27 branch will be built and installed inside the
28 VM, otherwise they will be pulled from the APT
29 repositories.
30
31For example, this script can be invoked like this:
32
33./dev/landscape-client-vm --password <LANDSCAPE_DEVEL_ACCOUNT_PW> intrepid
34
35where <LANDSCAPE_DEVEL_ACCOUNT_PW> is the account password of the
36landscape-devel account on the Landscape staging server (or you can specify
37another account with the --account parameter).
38
39The built VM will be stored under ./build/intrepid along with some other
40files. To launch the VM, cd to ./build/intrepid and issue:
41$ ./run
42Once it's booted you can log into it with:
43$ ./ssh
44EOF
45}
46
47OPTS=$(getopt -o hm:s:a:p:P:k:r:b: --long help,mirror:,server:,account:,password:,profile:,ssl-key:,repository:,build: -- "$@")
48
49if [ $? != 0 ]; then
50 exit 1
51fi
52
53eval set -- "$OPTS"
54
55MIRROR=http://archive.ubuntu.com/ubuntu
56SERVER=staging.landscape.canonical.com
57ACCOUNT=landscape-devel
58PASSWORD=
59PROFILE=server
60SSL_KEY=
61PPA=landscape/trunk
62BUILD=yes
63
64while true ; do
65 case "$1" in
66 -h|--help) help; exit 1; shift ;;
67 -m|--mirror) MIRROR=$2; shift 2 ;;
68 -s|--server) SERVER=$2; shift 2;;
69 -a|--account) ACCOUNT=$2; shift 2;;
70 -p|--password) PASSWORD=$2; shift 2;;
71 -P|--profile) PROFILE=$2; shift 2;;
72 -S|--ssl-key) SSL_KEY=$2; shift 2;;
73 -r|--repository) PPA=$2; shift 2;;
74 -b|--build) BUILD=$2; shift 2;;
75 --) shift ; break ;;
76 *) echo "Internal error!" ; exit 1 ;;
77 esac
78done
79
80if [ "$1" = "" ]; then
81 help
82 exit
83fi
84
85RELEASE=$1
86TOPDIR=$(pwd)/build/${RELEASE}-${PROFILE}
87SSH_KEY=$TOPDIR/ssh_key
88SSH_PORT=3322
89ROOTSIZE=8192
90
91rm -fR $TOPDIR
92mkdir -p $TOPDIR
93ssh-keygen -N '' -f $SSH_KEY
94
95cd $TOPDIR
96
97cat > config <<EOF
98[client]
99url = https://${SERVER}/message-system
100computer_title = ${RELEASE} test VM $$
101data_path = /var/lib/landscape/client
102script_users = ALL
103ping_url = http://${SERVER}/ping
104include_manager_plugins = ScriptExecution
105account_name = ${ACCOUNT}
106registration_password = ${PASSWORD}
107#log_level = debug
108EOF
109
110if ! [ "$WITH_SSL" = "" ]; then
111 echo ssl_public_key = $SSL_KEY >> config
112fi
113
114cat > script-wrapper <<EOF
115#!/bin/sh -e
116chroot \$1 /root/script
117EOF
118chmod 755 script-wrapper
119
120cat> ppa-key <<EOF
121-----BEGIN PGP PUBLIC KEY BLOCK-----
122Version: SKS 1.0.10
123
124mI0ESXN/egEEAOgRYISU9dnQm4BB5ZEEwKT+NKUDNd/DhMYdtBMw9Yk7S5cyoqpbtwoPJVzK
125AXxq+ng5e3yYypSv98pLMr5UF09FGaeyGlD4s1uaVFWkFCO4jsTg7pWIY6qzO/jMxB5+Yu/G
1260GjWQMNKxFk0oHMa0PhNBZtdPacVz65mOVmCsh/lABEBAAG0G0xhdW5jaHBhZCBQUEEgZm9y
127IExhbmRzY2FwZYi2BBMBAgAgBQJJc396AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ
128boWobkZStOb+rwP+ONKUWeX+MTIPqGWkknBPV7jm8nyyIUojC4IhS+9YR6GYnn0hMABSkEHm
129IV73feKmrT2GESYI1UdYeKiOkWsPN/JyBk+eTvKet0qsw5TluqiHSW+LEi/+zUyrS3dDMX3o
130yaLgYa+UkjIyxnaKLkQuCiS+D+fYwnJulIkhaKObtdE=
131=UwRd
132-----END PGP PUBLIC KEY BLOCK-----
133EOF
134
135cat > script <<EOF
136#!/bin/sh -e
137chown landscape /etc/landscape/client.conf
138chmod 600 /etc/landscape/client.conf
139apt-key add /root/ppa-key
140echo "RUN=1" > /etc/default/landscape-client
141EOF
142chmod 755 script
143
144cat > manifest <<EOF
145ppa-key /root
146script /root/script
147config /etc/landscape/client.conf
148EOF
149
150if [ "$WITH_SSL" = "yes" ]; then
151 echo /etc/landscape/certs/sample_ca.crt /etc/landscape/client.conf.ssl_public_key >> manifest
152fi
153
154cat > ssh <<EOF
155#!/bin/sh
156exec ssh -p $SSH_PORT -i $SSH_KEY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost
157EOF
158chmod 755 ssh
159
160cat > run <<EOF
161#!/bin/sh
162exec kvm --redir tcp:$SSH_PORT::22 -m 1280 -smp 1 -drive file=$TOPDIR/ubuntu-kvm/disk0.qcow2 "$@"
163EOF
164chmod 755 run
165
166ADDPKGS="--addpkg=landscape-client --addpkg=openssh-server"
167
168if [ "$PROFILE" = "server" ]; then
169 ADDPKGS="$ADDPKGS --addpkg apache2-mpm-prefork --addpkg postgresql --addpkg postfix"
170else
171 ADDPKGS="$ADDPKGS --addpkg ubuntu-desktop"
172fi
173
174if [ -n "$TMPDIR" ]; then
175 TEMP_DIR_OPT="-t $TMPDIR"
176fi
177
178sudo 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
0179
=== added file 'dev/run-piuparts'
--- dev/run-piuparts 1970-01-01 00:00:00 +0000
+++ dev/run-piuparts 2012-04-22 14:14:27 +0000
@@ -0,0 +1,154 @@
1#!/bin/sh -e
2
3help () {
4 cat <<EOF
5$0 [OPTION]: run piuparts against landscape-client packages built from a branch
6
7The script checks if packaging changes (i.e. modifications to debian/ files) have
8been introduced in the latest commit of the branch, and if so builds fresh
9packages and run piuparts against them.
10
11The first time it's run, this script automatically creates a pbuilder chroot
12for the same Ubuntu release the system is running. The chroot will be saved
13under /var/cache/pbuilder and re-used in subsequent runs.
14
15The piuparts output will be available under build/piuparts/output.log.
16
17Available options:
18
19 -m, --mirror <mirror> The Ubuntu mirror to use to build the pbuilder used
20 by piuparts chroot.
21 -f, --force Force running the tests, even if the debian/ directory
22 hasn't been changed in the last bzr commit.
23EOF
24}
25
26#
27# Check if X is running, if not abort because we would make X crash (D-Bus!)
28#
29if pidof X > /dev/null; then
30 cat <<EOF
31It appears you're running an X session. This script would kill your session
32due to landscape-client reloading dbus in its postinst script. Quitting now.
33EOF
34 exit 1
35fi
36
37#
38# Check we have piuparts >= 0.36
39#
40PIUPARTS_VERSION=$(sudo piuparts --version 2>/dev/null| cut -f 2 -d " ")
41if ! dpkg --compare-versions $PIUPARTS_VERSION ge 0.36; then
42 cat <<EOF
43You need piuparts 0.36 or higher
44EOF
45 exit 1
46fi
47
48#
49# Parse command line arguments
50#
51OPTS=$(getopt -o hm:f --long help,mirror:,force -- "$@")
52if [ $? != 0 ]; then
53 exit 1
54fi
55eval set -- "$OPTS"
56
57MIRROR=http://archive.ubuntu.com/ubuntu
58FORCE=no
59
60while true ; do
61 case "$1" in
62 -h|--help) help; exit 1; shift ;;
63 -m|--mirror) MIRROR=$2; shift 2 ;;
64 -f|--force) FORCE=yes; shift 1 ;;
65 --) shift ; break ;;
66 *) echo "Internal error!" ; exit 1 ;;
67 esac
68done
69
70#
71# Check bzr changes under debian/
72#
73if [ "${FORCE}" = "no" ]; then
74 if ! bzr diff -r revno:-1|diffstat -l|grep -q "^debian/.*"; then
75 echo "No packaging changes, skipping piuparts tests."
76 exit 0
77 fi
78fi
79
80#
81# Export the sources
82#
83TOPDIR=$(pwd)/build/piuparts
84RELEASE=$(lsb_release -cs)
85SOURCE=$(dpkg-parsechangelog |grep "^Source:" | cut -f 2 -d " ")
86VERSION=$(dpkg-parsechangelog |grep "^Version:" | cut -f 2 -d " ")
87ARCH=$(dpkg --print-architecture)
88rm -rf $TOPDIR
89mkdir -p $TOPDIR
90bzr export $TOPDIR/$SOURCE-$VERSION
91
92#
93# Build the package
94#
95cd $TOPDIR/$SOURCE-$VERSION
96dpkg-buildpackage -rfakeroot -b -uc -us
97cd $TOPDIR
98
99BASETGZ=/var/cache/pbuilder/${SOURCE}-${RELEASE}-${ARCH}.tgz
100if ! [ -e "$BASETGZ" ]; then
101 # Create the pbuilder chroot
102 COMPONENTS="main universe multiverse restricted"
103 OTHERMIRROR="deb ${MIRROR} ${RELEASE}-updates ${COMPONENTS}"
104
105 if [ "${RELEASE}" = "hardy" ] || [ "${RELEASE}" = "dapper" ]; then
106 LANDSCAPE_REPO="deb http://landscape.canonical.com/packages/${RELEASE} ./"
107 OTHERMIRROR="${OTHERMIRROR} | ${LANDSCAPE_REPO}"
108 fi
109
110 sudo pbuilder \
111 --create \
112 --distribution ${RELEASE} \
113 --mirror ${MIRROR} \
114 --components "${COMPONENTS}" \
115 --othermirror "${OTHERMIRROR}" \
116 --basetgz ${BASETGZ}
117else
118 # Update the pbuilder chroot
119 sudo pbuilder \
120 --update \
121 --basetgz ${BASETGZ}
122fi
123
124#
125# Run piuparts
126#
127
128# Workaround a bug in policykit not purging correctly
129mkdir -p ${TOPDIR}/scripts/
130cat > ${TOPDIR}/scripts/post_purge_policy_kit <<EOF
131#!/bin/sh
132rm -rf /var/lib/PolicyKit/user-haldaemon.auths
133EOF
134chmod 755 ${TOPDIR}/scripts/post_purge_policy_kit
135
136sudo piuparts \
137 --scriptsdir=${TOPDIR}/scripts/ \
138 --keep-sources-list \
139 --skip-minimize \
140 --no-symlinks \
141 -i /var/lib/PolicyKit \
142 -i /etc/ssl \
143 -I "/etc/udev.*" \
144 -I "/lib/udev/.*" \
145 -I "/var/lib/.*" \
146 -I "/usr/lib/python2.6/dist-packages/twisted.*" \
147 -i /etc/X11 \
148 -i /etc/dbus-1 \
149 -i /etc/dbus-1/system.d \
150 -I "/usr/lib/python2.4/site-packages/apt.*" \
151 -I "/usr/lib/python2.4/site-packages/dbus.*" \
152 -I "/usr/lib/python2.5/site-packages/twisted.*" \
153 -b ${BASETGZ} \
154 ${SOURCE}_${VERSION}_${ARCH}.changes
0155
=== added file 'dev/upload-to-ppa'
--- dev/upload-to-ppa 1970-01-01 00:00:00 +0000
+++ dev/upload-to-ppa 2012-04-22 14:14:27 +0000
@@ -0,0 +1,123 @@
1#!/bin/sh -e
2
3help () {
4 cat <<EOF
5Invoke this script from a $package bzr branch to build source packages for
6all target distributions and upload them to a PPA.
7
8Options:
9
10 -p=<PPA>|--ppa=<PPA> The PPA to upload to. This gets passed to dput, please
11 make sure you have a matching stanza in your ~/.dput.cf
12
13 -k=<KEY>|--key=<KEY> The GPG key used to sign the packages
14
15 -s|--snapshot Tweak the Debian revision by including the current bzr
16 revision number in it (e.g. 1.4.0~bzr178-0ubuntu0.8.04)
17
18 -h|--help Print this help and exit
19
20EOF
21 exit
22}
23
24#
25# Check if we are in a bzr branch
26#
27if ! [ -d .bzr ] || ! [ -f debian/changelog ]; then
28 echo "Error: not in a package bzr branch"
29 echo
30 help
31fi
32
33#
34# Set defaults and parse command line arguments
35#
36ppa=landscape
37key=free.ekanayaka@canonical.com
38snapshot=no
39package=$(dpkg-parsechangelog |grep ^Source|cut -f 2 -d " ")
40version=$(dpkg-parsechangelog |grep ^Version|cut -f 2 -d " ")
41upstream=$(echo $version | cut -f 1 -d "-")
42
43for i in $*; do
44 case $i in
45 -p=*|--ppa=*)
46 ppa=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
47 ;;
48 -k=*|--key=*)
49 key=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
50 ;;
51 -s|--snapshot)
52 snapshot=yes
53 ;;
54 -h|--help)
55 help
56 ;;
57 *)
58 echo "Error: unknown option $i"
59 echo
60 help
61 ;;
62 esac
63done
64
65if [ "$snapshot" = "yes" ]; then
66 bzr_rev=$(bzr log -l 1|grep ^revno|cut -f 2 -d " ")
67 upstream="$upstream~bzr$bzr_rev"
68fi
69
70#
71# Clean up from possible previous runs
72#
73rm -fR ../${package}-*
74rm -f ../${package}_*
75
76#
77# Export the sources
78#
79bzr export ../${package}-${upstream}
80cd ..
81cp -a ${package}-${upstream} ${package}-${upstream}.orig
82rm -R ${package}-${upstream}.orig/debian
83cd ${package}-${upstream}
84
85#
86# Build source packages and upload them
87#
88releases="hardy_8.04 karmic_9.10 lucid_10.04 maverick_10.10 natty_11.04 oneiric_11.10"
89
90if [ "$snapshot" = "yes" ]; then
91 # Snapshot, we'll add a dummy changelog entry like for all releases
92 source_opt="-sa"
93 releases="$releases natty_11.04"
94else
95 # Actual release, use the latest changelog entry and upload now
96 dpkg-buildpackage -S -sa -k$key
97 dput $ppa ../${package}_${version}_source.changes
98 source_opt="-sd"
99fi
100
101for release in $releases; do
102
103 codename=$(echo $release|cut -f 1 -d _)
104 revision=0ubuntu0.$(echo $release|cut -f 2 -d _)
105 if ! [ "$snapshot" = "yes" ]; then
106 revision=${revision}.0~landscape1
107 fi
108 version=$upstream-$revision
109
110 if [ "$snapshot" = "yes" ]; then
111 message="Snapshot build for $codename"
112 else
113 message="Built for $codename, no source changes"
114 fi
115 cp debian/changelog ../
116 dch --force-distribution -b -v $version -D $codename -m $message
117 dpkg-buildpackage -S $source_opt -k$key
118 dput $ppa ../${package}_${version}_source.changes
119 mv ../changelog debian
120
121 source_opt="-sd"
122
123done
0124
=== added directory 'glib-2.0'
=== renamed directory 'glib-2.0' => 'glib-2.0.moved'
=== added directory 'glib-2.0/schemas'
=== added file 'glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml'
--- glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml 1970-01-01 00:00:00 +0000
+++ glib-2.0/schemas/com.canonical.landscape-client-settings.gschema.xml 2012-04-22 14:14:27 +0000
@@ -0,0 +1,37 @@
1<?xml version="1.0" encoding="utf-8"?>
2<schemalist>
3 <schema id="com.canonical.landscape-client-settings" path="/com/canonical/landscape-client-settings/">
4 <key type="s" name="management-type">
5 <default>"not"</default>
6 <summary>Whether the client settings UI currently set to a hosted client configuration, an LDS instance or no management service.</summary>
7 </key>
8 <key type="s" name="computer-title">
9 <default>""</default>
10 <summary>The title to register the machine with.</summary>
11 </key>
12 <key type="s" name="hosted-landscape-host">
13 <default>"landscape.canonical.com"</default>
14 <summary>The hostname of the Canonical hosted landscape system.</summary>
15 </key>
16 <key type="s" name="hosted-account-name">
17 <default>""</default>
18 <summary>An account name for use with the Canonical hosted landscape system.</summary>
19 </key>
20 <key type="s" name="hosted-password">
21 <default>""</default>
22 <summary>A password for use with the Canonical hosted landscape system</summary>
23 </key>
24 <key type="s" name="local-landscape-host">
25 <default>""</default>
26 <summary>The hostname of the local landscape system.</summary>
27 </key>
28 <key type="s" name="local-account-name">
29 <default>""</default>
30 <summary>An account name for use with the local landscape system.</summary>
31 </key>
32 <key type="s" name="local-password">
33 <default>""</default>
34 <summary>A password for use with the local landscape system</summary>
35 </key>
36 </schema>
37</schemalist>
038
=== added directory 'icons'
=== renamed directory 'icons' => 'icons.moved'
=== added file 'icons/preferences-management-service.svg'
--- icons/preferences-management-service.svg 1970-01-01 00:00:00 +0000
+++ icons/preferences-management-service.svg 2012-04-22 14:14:27 +0000
@@ -0,0 +1,62 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 version="1.1"
13 x="0px"
14 y="0px"
15 width="32"
16 height="32"
17 viewBox="-0.787 -0.867 32 32"
18 enable-background="new -0.787 -0.867 285 285"
19 xml:space="preserve"
20 id="svg2"
21 inkscape:version="0.48.2 r9819"
22 sodipodi:docname="canonical_aubergine_hex.svg"><metadata
23 id="metadata12"><rdf:RDF><cc:Work
24 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
25 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
26 pagecolor="#ffffff"
27 bordercolor="#666666"
28 borderopacity="1"
29 objecttolerance="10"
30 gridtolerance="10"
31 guidetolerance="10"
32 inkscape:pageopacity="0"
33 inkscape:pageshadow="2"
34 inkscape:window-width="697"
35 inkscape:window-height="480"
36 id="namedview10"
37 showgrid="false"
38 fit-margin-top="0"
39 fit-margin-left="0"
40 fit-margin-right="0"
41 fit-margin-bottom="0"
42 inkscape:zoom="7.38"
43 inkscape:cx="15.9035"
44 inkscape:cy="16.176"
45 inkscape:window-x="449"
46 inkscape:window-y="100"
47 inkscape:window-maximized="0"
48 inkscape:current-layer="svg2" />
49<defs
50 id="defs4">
51</defs>
52<path
53 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"
54 id="path6"
55 inkscape:connector-curvature="0"
56 style="fill:#772953" />
57<path
58 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"
59 id="path8"
60 inkscape:connector-curvature="0"
61 style="fill:#772953" />
62</svg>
0\ No newline at end of file63\ No newline at end of file
164
=== added directory 'landscape'
=== added file 'landscape-client.conf'
--- landscape-client.conf 1970-01-01 00:00:00 +0000
+++ landscape-client.conf 2012-04-22 14:14:27 +0000
@@ -0,0 +1,12 @@
1[client]
2bus = session
3computer_title = John's PC
4account_name = onward
5registration_password =
6url = http://localhost:8080/message-system
7data_path = /tmp/landscape/
8log_dir = /tmp/landscape/
9log_level = debug
10pid_file = /tmp/landscape/landscape-client.pid
11ping_url = http://localhost:8081/ping
12
013
=== renamed file 'landscape-client.conf' => 'landscape-client.conf.moved'
=== renamed directory 'landscape' => 'landscape.moved'
=== added file 'landscape/__init__.py'
--- landscape/__init__.py 1970-01-01 00:00:00 +0000
+++ landscape/__init__.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,57 @@
1import sys
2
3DEBIAN_REVISION = ""
4UPSTREAM_VERSION = "12.04.2"
5VERSION = "%s%s" % (UPSTREAM_VERSION, DEBIAN_REVISION)
6
7# The "server-api" field of outgoing messages will be set to this value, and
8# used by the server message system to lookup the correct MessageAPI adapter
9# for handling the messages sent by the client. Bump it when the schema of any
10# of the messages sent by the client changes in a backward-incompatible way.
11#
12# Changelog:
13#
14# 3.2:
15# * Add new "eucalyptus-info" and "eucalyptus-info-error" messages.
16#
17SERVER_API = "3.2"
18
19# XXX This is needed for backward compatibility in the server code importing
20# the API variable. We should eventually replace it in the server code.
21API = SERVER_API
22
23# The "client-api" field of outgoing messages will be set to this value, and
24# used by the server to know which schema do the message types accepted by the
25# client support. Bump it when the schema of an accepted message type changes
26# and update the changelog below as needed.
27#
28# Changelog:
29#
30# 3.3:
31# * Add "binaries" field to "change-packages"
32# * Add "policy" field to "change-packages"
33# * Add new "change-package-locks" client accepted message type.
34#
35CLIENT_API = "3.3"
36
37from twisted.python import util
38
39
40def initgroups(uid, gid):
41 """Initializes the group access list.
42
43 It replaces the default implementation of Twisted which iterates other all
44 groups, using the system call C{initgroups} instead. This wrapper just
45 translates the numeric C{uid} to a user name understood by C{initgroups}.
46 """
47 import pwd
48 from landscape.lib.initgroups import initgroups as cinitgroups
49 return cinitgroups(pwd.getpwuid(uid).pw_name, gid)
50
51
52if "twisted.python._initgroups" not in sys.modules:
53 # Patch twisted initgroups implementation, which can result in very long
54 # calls to grp.getrlall(). See http://twistedmatrix.com/trac/ticket/3226
55 # We can remove that bit when Lucid is our oldest supported version
56 # (May 2013).
57 util.initgroups = initgroups
058
=== added file 'landscape/accumulate.py'
--- landscape/accumulate.py 1970-01-01 00:00:00 +0000
+++ landscape/accumulate.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,112 @@
1"""
2The accumulation logic generates data points for times that are a
3multiple of a step size. In other words, if the step size is 300
4seconds, any data reported by the accumulation code will always be for
5a timestamp that is a multiple of 300. The purpose of this behaviour
6is to (a) limit the amount of data that is sent to the server and (b)
7provide data in a predictable format to make server-side handling of
8the data straight-forward. A nice side-effect of providing data at a
9known step-interval is that the server can detect blackholes in the
10data simply by testing for the absence of data points at step
11intervals.
12
13Limiting the amount of data sent to the server and making the data
14format predictable are both desirable attributes, but we need to
15ensure the data reported is accurate. We can't rely on plugins to
16report data exactly at step boundaries and even if we could we
17wouldn't necessarily end up with data points that are representative
18of the resource being monitored. We need a way to calculate a
19representative data point from the set of data points that a plugin
20provided during a step period.
21
22Suppose we want to calculate data points for timestamps 300 and 600.
23Assume a plugin runs at an interval less than 300 seconds to get
24values to provide to the accumulator. Each value received by the
25accumulator is used to update a data point that will be sent to the
26server when we cross the step boundary. The algorithm, based on
27derivatives, is:
28
29 (current time - previous time) * value + last accumulated value
30
31If the 'last accumulated value' isn't available, it defaults to 0.
32For example, consider these timestamp/load average measurements:
33300/2.0, 375/3.0, 550/3.5 and 650/0.5. Also assume we have no data
34prior to 300/2.0. This data would be processed as follows:
35
36 Input Calculation Accumulated Value
37 ----- ----------- -----------------
38 300/2.0 (300 - 300) * 2.0 + 0 0.0
39
40 375/3.0 (375 - 300) * 3.0 + 0.0 225.0
41
42 550/3.5 (550 - 375) * 3.5 + 225.0 837.5
43
44 650/0.5 (600 - 550) * 0.5 + 837.5 862.5
45
46Notice that the last value crosses a step boundary; the calculation
47for this value is:
48
49 (step boundary time - previous time) * value + last accumulated value
50
51This yields the final accumulated value for the step period we've just
52traversed. The data point sent to the server is generated using the
53following calculation:
54
55 accumulated value / step interval size
56
57The data point sent to the server in our example would be:
58
59 862.5 / 300 = 2.875
60
61This value is representative of the activity that actually occurred
62and is returned to the plugin to queue for delivery to the server.
63The accumulated value for the next interval is calculated using the
64portion of time that crossed into the new step period:
65
66 Input Calculation Accumulated Value
67 ----- ----------- -----------------
68 650/0.5 (650 - 600) * 0.5 + 0 25
69
70And so the logic goes, continuing in a similar fashion, yielding
71representative data at each step boundary.
72"""
73
74class Accumulator(object):
75
76 def __init__(self, persist, step_size):
77 self._persist = persist
78 self._step_size = step_size
79
80 def __call__(self, new_timestamp, new_free_space, key):
81 previous_timestamp, accumulated_value = self._persist.get(key, (0, 0))
82 accumulated_value, step_data = \
83 accumulate(previous_timestamp, accumulated_value,
84 new_timestamp, new_free_space, self._step_size)
85 self._persist.set(key, (new_timestamp, accumulated_value))
86 return step_data
87
88
89def accumulate(previous_timestamp, accumulated_value,
90 new_timestamp, new_value,
91 step_size):
92 previous_step = previous_timestamp // step_size
93 new_step = new_timestamp // step_size
94 step_boundary = new_step * step_size
95 step_diff = new_step - previous_step
96 step_data = None
97
98 if step_diff == 0:
99 diff = new_timestamp - previous_timestamp
100 accumulated_value += diff * new_value
101 elif step_diff == 1:
102 diff = step_boundary - previous_timestamp
103 accumulated_value += diff * new_value
104 step_value = float(accumulated_value) / step_size
105 step_data = (step_boundary, step_value)
106 diff = new_timestamp - step_boundary
107 accumulated_value = diff * new_value
108 else:
109 diff = new_timestamp - step_boundary
110 accumulated_value = diff * new_value
111
112 return accumulated_value, step_data
0113
=== added file 'landscape/amp.py'
--- landscape/amp.py 1970-01-01 00:00:00 +0000
+++ landscape/amp.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,107 @@
1import os
2import logging
3
4from landscape.lib.amp import (
5 MethodCallProtocol, MethodCallFactory, RemoteObjectConnector)
6
7
8class ComponentProtocol(MethodCallProtocol):
9 """Communication protocol between the various Landscape components.
10
11 It can be used both as server-side protocol for exposing the methods of a
12 certain Landscape component, or as client-side protocol for connecting to
13 another Landscape component we want to call the methods of.
14 """
15 methods = ["ping", "exit"]
16 timeout = 60
17
18
19class ComponentProtocolFactory(MethodCallFactory):
20
21 protocol = ComponentProtocol
22 initialDelay = 0.05
23
24
25class RemoteComponentConnector(RemoteObjectConnector):
26 """Utility superclass for creating connections with a Landscape component.
27
28 @cvar component: The class of the component to connect to, it is expected
29 to define a C{name} class attribute, which will be used to find out
30 the socket to use. It must be defined by sub-classes.
31
32 @param reactor: A L{TwistedReactor} object.
33 @param config: A L{LandscapeConfiguration}.
34 @param args: Positional arguments for protocol factory constructor.
35 @param kwargs: Keyword arguments for protocol factory constructor.
36
37 @see: L{MethodCallClientFactory}.
38 """
39
40 factory = ComponentProtocolFactory
41
42 def __init__(self, reactor, config, *args, **kwargs):
43 self._twisted_reactor = reactor
44 socket = os.path.join(config.sockets_path,
45 self.component.name + ".sock")
46 super(RemoteComponentConnector, self).__init__(
47 self._twisted_reactor._reactor, socket, *args, **kwargs)
48
49 def connect(self, max_retries=None, factor=None, quiet=False):
50 """Connect to the remote Landscape component.
51
52 If the connection is lost after having been established, and then
53 it is established again by the reconnect mechanism, an event will
54 be fired.
55
56 @param max_retries: If given, the connector will keep trying to connect
57 up to that number of times, if the first connection attempt fails.
58 @param factor: Optionally a float indicating by which factor the
59 delay between subsequent retries should increase. Smaller values
60 result in a faster reconnection attempts pace.
61 @param quiet: A boolean indicating whether to log errors.
62 """
63
64 def fire_reconnect(remote):
65 self._twisted_reactor.fire("%s-reconnect" %
66 self.component.name)
67
68 def connected(remote):
69 self._factory.add_notifier(fire_reconnect)
70 return remote
71
72 def log_error(failure):
73 logging.error("Error while connecting to %s", self.component.name)
74 return failure
75
76 result = super(RemoteComponentConnector, self).connect(
77 max_retries=max_retries, factor=factor)
78 if not quiet:
79 result.addErrback(log_error)
80 result.addCallback(connected)
81 return result
82
83
84class RemoteComponentsRegistry(object):
85 """
86 A global registry for looking up Landscape component connectors by name.
87 """
88
89 _by_name = {}
90
91 @classmethod
92 def get(cls, name):
93 """Get the connector class for the given Landscape component.
94
95 @param name: Name of the Landscape component we want to connect to, for
96 instance C{monitor} or C{manager}.
97 """
98 return cls._by_name[name]
99
100 @classmethod
101 def register(cls, connector_class):
102 """Register a connector for a Landscape component.
103
104 @param connector_class: A sub-class of L{RemoteComponentConnector}
105 that can be used to connect to a certain component.
106 """
107 cls._by_name[connector_class.component.name] = connector_class
0108
=== added directory 'landscape/broker'
=== added file 'landscape/broker/__init__.py'
--- landscape/broker/__init__.py 1970-01-01 00:00:00 +0000
+++ landscape/broker/__init__.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,3 @@
1"""
2The broker mediates communication with client components to the server.
3"""
04
=== added file 'landscape/broker/amp.py'
--- landscape/broker/amp.py 1970-01-01 00:00:00 +0000
+++ landscape/broker/amp.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,142 @@
1from twisted.internet.defer import maybeDeferred, execute, succeed
2
3from landscape.lib.amp import RemoteObject
4from landscape.amp import (
5 ComponentProtocol, ComponentProtocolFactory, RemoteComponentConnector,
6 RemoteComponentsRegistry)
7from landscape.broker.server import BrokerServer
8from landscape.broker.client import BrokerClient
9from landscape.monitor.monitor import Monitor
10from landscape.manager.manager import Manager
11
12
13class BrokerServerProtocol(ComponentProtocol):
14 """
15 Communication protocol between the broker server and its clients.
16 """
17 methods = (ComponentProtocol.methods +
18 ["fire_event",
19 "get_accepted_message_types",
20 "get_server_uuid",
21 "is_message_pending",
22 "register",
23 "register_client",
24 "register_client_accepted_message_type",
25 "reload_configuration",
26 "send_message",
27 "stop_clients",
28 "listen_events"])
29
30
31class BrokerServerProtocolFactory(ComponentProtocolFactory):
32
33 protocol = BrokerServerProtocol
34
35
36class RemoteBroker(RemoteObject):
37
38 def call_if_accepted(self, type, callable, *args):
39 """Call C{callable} if C{type} is an accepted message type."""
40 deferred_types = self.get_accepted_message_types()
41
42 def got_accepted_types(result):
43 if type in result:
44 return callable(*args)
45 deferred_types.addCallback(got_accepted_types)
46 return deferred_types
47
48 def call_on_event(self, handlers):
49 """Call a given handler as soon as a certain event occurs.
50
51 @param handlers: A dictionary mapping event types to callables, where
52 an event type is string (the name of the event). When the first of
53 the given event types occurs in the broker reactor, the associated
54 callable will be fired.
55 """
56 result = self.listen_events(handlers.keys())
57 return result.addCallback(lambda event_type: handlers[event_type]())
58
59
60class FakeRemoteBroker(object):
61 """Looks like L{RemoteBroker}, but actually talks to local objects."""
62
63 def __init__(self, exchanger, message_store):
64 self.exchanger = exchanger
65 self.message_store = message_store
66 self.protocol = BrokerServerProtocol()
67
68 def ping(self):
69 return succeed(True)
70
71 def call_if_accepted(self, type, callable, *args):
72 if type in self.message_store.get_accepted_types():
73 return maybeDeferred(callable, *args)
74 return succeed(None)
75
76 def send_message(self, message, urgent=False):
77 """Send to the previously given L{MessageExchange} object."""
78
79 # Check that the message to be sent is serializable over AMP
80 from landscape.lib.amp import MethodCallArgument
81 assert(MethodCallArgument.check(message))
82
83 return execute(self.exchanger.send, message, urgent=urgent)
84
85 def register_client_accepted_message_type(self, type):
86 return execute(self.exchanger.register_client_accepted_message_type,
87 type)
88
89 def get_accepted_message_types(self):
90 """
91 Return a deferred resulting in the list of message types accepted
92 by the Landscape server.
93 """
94 return execute(self.message_store.get_accepted_types)
95
96
97class BrokerClientProtocol(ComponentProtocol):
98 """Communication protocol between a client and the broker."""
99
100 methods = (ComponentProtocol.methods + ["fire_event", "message"])
101
102
103class BrokerClientProtocolFactory(ComponentProtocolFactory):
104
105 protocol = BrokerClientProtocol
106
107
108class RemoteClient(RemoteObject):
109 """A remote L{BrokerClient} connected to a L{BrokerServer}."""
110
111
112class RemoteBrokerConnector(RemoteComponentConnector):
113 """Helper to create connections with the L{BrokerServer}."""
114
115 factory = BrokerClientProtocolFactory
116 remote = RemoteBroker
117 component = BrokerServer
118
119
120class RemoteClientConnector(RemoteComponentConnector):
121 """Helper to create connections with the L{BrokerServer}."""
122
123 factory = BrokerServerProtocolFactory
124 remote = RemoteClient
125 component = BrokerClient
126
127
128class RemoteMonitorConnector(RemoteClientConnector):
129 """Helper to create connections with the L{Monitor}."""
130
131 component = Monitor
132
133
134class RemoteManagerConnector(RemoteClientConnector):
135 """Helper for creating connections with the L{Monitor}."""
136
137 component = Manager
138
139RemoteComponentsRegistry.register(RemoteBrokerConnector)
140RemoteComponentsRegistry.register(RemoteClientConnector)
141RemoteComponentsRegistry.register(RemoteMonitorConnector)
142RemoteComponentsRegistry.register(RemoteManagerConnector)
0143
=== added file 'landscape/broker/client.py'
--- landscape/broker/client.py 1970-01-01 00:00:00 +0000
+++ landscape/broker/client.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,200 @@
1from logging import info, exception
2
3from twisted.internet.defer import maybeDeferred
4
5from landscape.log import format_object
6from landscape.lib.twisted_util import gather_results
7
8
9class HandlerNotFoundError(Exception):
10 """A handler for the given message type was not found."""
11
12
13class BrokerClientPlugin(object):
14 """A convenience for writing L{BrokerClient} plugins.
15
16 This provides a register method which will set up a bunch of
17 reactor handlers in the idiomatic way.
18
19 If C{run} is defined on subclasses, it will be called every C{run_interval}
20 seconds after being registered.
21
22 @cvar run_interval: The interval, in seconds, to execute the C{run} method.
23 If set to C{None}, then C{run} will not be scheduled.
24 @cvar run_immediately: If C{True} the plugin will be run immediately after
25 it is registered.
26 """
27
28 run_interval = 5
29 run_immediately = False
30
31 def register(self, client):
32 self.client = client
33 if getattr(self, "run", None) is not None:
34 if self.run_immediately:
35 self.run()
36 if self.run_interval is not None:
37 self.client.reactor.call_every(self.run_interval, self.run)
38
39 @property
40 def registry(self):
41 """An alias for the C{client} attribute."""
42 return self.client
43
44 def call_on_accepted(self, type, callable, *args, **kwargs):
45 """
46 Register a callback fired upon a C{message-type-acceptance-changed}.
47 """
48
49 def acceptance_changed(acceptance):
50 if acceptance:
51 return callable(*args, **kwargs)
52
53 self.client.reactor.call_on(("message-type-acceptance-changed", type),
54 acceptance_changed)
55
56
57class BrokerClient(object):
58 """Basic plugin registry for clients that have to deal with the broker.
59
60 This knows about the needs of a client when dealing with the Landscape
61 broker, including interest in messages of a particular type delivered
62 by the broker to the client.
63
64 @cvar name: The name used when registering to the broker, it must be
65 defined by sub-classes.
66 @ivar broker: A reference to a connected L{RemoteBroker}, it must be set
67 by the connecting machinery at service startup.
68
69 @param reactor: A L{TwistedReactor}.
70 """
71 name = "client"
72
73 def __init__(self, reactor):
74 super(BrokerClient, self).__init__()
75 self.reactor = reactor
76 self.broker = None
77 self._registered_messages = {}
78 self._plugins = []
79 self._plugin_names = {}
80
81 # Register event handlers
82 self.reactor.call_on("impending-exchange", self.notify_exchange)
83 self.reactor.call_on("broker-reconnect", self.handle_reconnect)
84
85 def ping(self):
86 """Return C{True}"""
87 return True
88
89 def add(self, plugin):
90 """Add a plugin.
91
92 The plugin's C{register} method will be called with this broker client
93 as its argument.
94
95 If the plugin has a C{plugin_name} attribute, it will be possible to
96 look up the plugin later with L{get_plugin}.
97 """
98 info("Registering plugin %s.", format_object(plugin))
99 self._plugins.append(plugin)
100 if hasattr(plugin, 'plugin_name'):
101 self._plugin_names[plugin.plugin_name] = plugin
102 plugin.register(self)
103
104 def get_plugins(self):
105 """Get the list of plugins."""
106 return self._plugins[:]
107
108 def get_plugin(self, name):
109 """Get a particular plugin by name."""
110 return self._plugin_names[name]
111
112 def register_message(self, type, handler):
113 """
114 Register interest in a particular type of Landscape server->client
115 message.
116
117 @param type: The type of message to register C{handler} for.
118 @param handler: A callable taking a message as a parameter, called
119 when messages of C{type} are received.
120 @return: A C{Deferred} that will fire when registration completes.
121 """
122 self._registered_messages[type] = handler
123 return self.broker.register_client_accepted_message_type(type)
124
125 def dispatch_message(self, message):
126 """Run the handler registered for the type of the given message.
127
128 @return: The return value of the handler, if found.
129 @raises: HandlerNotFoundError if the handler was not found
130 """
131 type = message["type"]
132 handler = self._registered_messages.get(type)
133 if handler is None:
134 raise HandlerNotFoundError(type)
135 try:
136 return handler(message)
137 except:
138 exception("Error running message handler for type %r: %r"
139 % (type, handler))
140
141 def message(self, message):
142 """Call C{dispatch_message} for the given C{message}.
143
144 @return: A boolean indicating if a handler for the message was found.
145 """
146 try:
147 self.dispatch_message(message)
148 return True
149 except HandlerNotFoundError:
150 return False
151
152 def exchange(self):
153 """Call C{exchange} on all plugins."""
154 for plugin in self.get_plugins():
155 if hasattr(plugin, "exchange"):
156 try:
157 plugin.exchange()
158 except:
159 exception("Error during plugin exchange")
160
161 def notify_exchange(self):
162 """Notify all plugins about an impending exchange."""
163 info("Got notification of impending exchange. Notifying all plugins.")
164 self.exchange()
165
166 def fire_event(self, event_type, *args, **kwargs):
167 """Fire an event of a given type.
168
169 @return: A L{Deferred} resulting in a list of returns values of
170 the fired event handlers, in the order they were fired.
171 """
172 if event_type == "message-type-acceptance-changed":
173 message_type = args[0]
174 acceptance = args[1]
175 results = self.reactor.fire((event_type, message_type), acceptance)
176 else:
177 results = self.reactor.fire(event_type, *args, **kwargs)
178 return gather_results([
179 maybeDeferred(lambda x: x, result) for result in results])
180
181 def handle_reconnect(self):
182 """Called when the connection with the broker is established again.
183
184 The following needs to be done:
185
186 - Re-register any previously registered message types, so the broker
187 knows we have interest on them.
188
189 - Re-register ourselves as client, so the broker knows we exist and
190 will talk to us firing events and dispatching messages.
191 """
192 for type in self._registered_messages:
193 self.broker.register_client_accepted_message_type(type)
194 self.broker.register_client(self.name)
195
196 def exit(self):
197 """Stop the reactor and exit the process."""
198 # Stop with a short delay to give a chance to reply to the
199 # caller over AMP.
200 self.reactor.call_later(0.1, self.reactor.stop)
0201
=== added file 'landscape/broker/config.py'
--- landscape/broker/config.py 1970-01-01 00:00:00 +0000
+++ landscape/broker/config.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,98 @@
1"""Configuration class for the broker."""
2
3import os
4
5from landscape.deployment import Configuration
6
7
8class BrokerConfiguration(Configuration):
9 """Specialized configuration for the Landscape Broker.
10
11 @cvar required_options: C{["url"]}
12 """
13
14 def __init__(self):
15 super(BrokerConfiguration, self).__init__()
16 self._original_http_proxy = os.environ.get("http_proxy")
17 self._original_https_proxy = os.environ.get("https_proxy")
18
19 @property
20 def exchange_store_path(self):
21 return os.path.join(self.data_path, "exchange.database")
22
23 def make_parser(self):
24 """Parser factory for broker-specific options.
25
26 @return: An L{OptionParser} preset for all the options
27 from L{Configuration.make_parser} plus:
28 - C{account_name}
29 - C{registration_password}
30 - C{computer_title}
31 - C{exchange_interval} (C{15*60})
32 - C{urgent_exchange_interval} (C{1*60})
33 - C{http_proxy}
34 - C{https_proxy}
35 - C{cloud}
36 - C{otp}
37 - C{provisioning_otp}
38 """
39 parser = super(BrokerConfiguration, self).make_parser()
40
41 parser.add_option("-a", "--account-name", metavar="NAME",
42 help="The account this computer belongs to.")
43 parser.add_option("-p", "--registration-password", metavar="PASSWORD",
44 help="The account-wide password used for "
45 "registering clients.")
46 parser.add_option("-t", "--computer-title", metavar="TITLE",
47 help="The title of this computer")
48 parser.add_option("--exchange-interval", default=15 * 60, type="int",
49 metavar="INTERVAL",
50 help="The number of seconds between server "
51 "exchanges.")
52 parser.add_option("--urgent-exchange-interval", default=1 * 60,
53 type="int", metavar="INTERVAL",
54 help="The number of seconds between urgent server "
55 "exchanges.")
56 parser.add_option("--ping-interval", default=30, type="int",
57 metavar="INTERVAL",
58 help="The number of seconds between pings.")
59 parser.add_option("--http-proxy", metavar="URL",
60 help="The URL of the HTTP proxy, if one is needed.")
61 parser.add_option("--https-proxy", metavar="URL",
62 help="The URL of the HTTPS proxy, if one is needed.")
63 parser.add_option("--cloud", action="store_true",
64 help="Set this if your computer is in an EC2 cloud.")
65 parser.add_option("--otp", default="",
66 help="The OTP to use in cloud configuration.")
67 parser.add_option("--tags",
68 help="Comma separated list of tag names to be sent "
69 "to the server.")
70 parser.add_option("--provisioning-otp", default="",
71 help="The OTP to use for a provisioned machine.")
72
73 return parser
74
75 @property
76 def message_store_path(self):
77 """Get the path to the message store."""
78 return os.path.join(self.data_path, "messages")
79
80 def load(self, args, accept_nonexistent_config=False):
81 """
82 Load options from command line arguments and a config file.
83
84 Load the configuration with L{Configuration.load}, and then set
85 C{http_proxy} and C{https_proxy} environment variables based on
86 that config data.
87 """
88 super(BrokerConfiguration, self).load(
89 args, accept_nonexistent_config=accept_nonexistent_config)
90 if self.http_proxy:
91 os.environ["http_proxy"] = self.http_proxy
92 elif self._original_http_proxy:
93 os.environ["http_proxy"] = self._original_http_proxy
94
95 if self.https_proxy:
96 os.environ["https_proxy"] = self.https_proxy
97 elif self._original_https_proxy:
98 os.environ["https_proxy"] = self._original_https_proxy
099
=== added file 'landscape/broker/exchange.py'
--- landscape/broker/exchange.py 1970-01-01 00:00:00 +0000
+++ landscape/broker/exchange.py 2012-04-22 14:14:27 +0000
@@ -0,0 +1,436 @@
1"""The part of the broker which deals with communications with the server."""
2import time
3import logging
4from landscape.lib.hashlib import md5
5
6from twisted.internet.defer import succeed
7
8from landscape.lib.message import got_next_expected, ANCIENT
9from landscape.log import format_delta
10from landscape import SERVER_API, CLIENT_API
11
12
13class MessageExchange(object):
14 """
15 The Message Exchange is the place where messages are sent to go
16 out to the Landscape server.
17
18 The Message Exchange will accumulate messages in its message store
19 and periodically deliver them to the server.
20 """
21
22 plugin_name = "message-exchange"
23
24 def __init__(self, reactor, store, transport, registration_info,
25 exchange_store,
26 config,
27 monitor_interval=None,
28 max_messages=100,
29 create_time=time.time):
30 """
31 @param reactor: A L{TwistedReactor} used to fire events in response
32 to messages received by the server.
33 @param store: A L{MessageStore} used to queue outgoing messages.
34 @param transport: A L{HTTPTransport} used to deliver messages.
35 @param exchange_interval: time interval between subsequent
36 exchanges of non-urgent messages.
37 @param urgent_exchange_interval: time interval between subsequent
38 exchanges of urgent messages.
39 """
40 self._reactor = reactor
41 self._message_store = store
42 self._create_time = create_time
43 self._transport = transport
44 self._registration_info = registration_info
45 self._config = config
46 self._exchange_interval = config.exchange_interval
47 self._urgent_exchange_interval = config.urgent_exchange_interval
48 self._max_messages = max_messages
49 self._notification_id = None
50 self._exchange_id = None
51 self._exchanging = False
52 self._urgent_exchange = False
53 self._client_accepted_types = set()
54 self._client_accepted_types_hash = None
55 self._message_handlers = {}
56 self._exchange_store = exchange_store
57
58 self.register_message("accepted-types", self._handle_accepted_types)
59 self.register_message("resynchronize", self._handle_resynchronize)
60 self.register_message("set-intervals", self._handle_set_intervals)
61 reactor.call_on("resynchronize-clients", self._resynchronize)
62 reactor.call_on("pre-exit", self.stop)
63
64 def get_exchange_intervals(self):
65 """Return a binary tuple with urgent and normal exchange intervals."""
66 return (self._urgent_exchange_interval, self._exchange_interval)
67
68 def _message_is_obsolete(self, message):
69 """Returns C{True} if message is obsolete.
70
71 A message is considered obsolete if the secure ID changed since it was
72 received.
73 """
74 if 'operation-id' not in message:
75 return False
76
77 operation_id = message['operation-id']
78 context = self._exchange_store.get_message_context(operation_id)
79 if context is None:
80 logging.warning(
81 "No message context for message with operation-id: %s"
82 % operation_id)
83 return False
84
85 # Compare the current secure ID with the one that was in effect when
86 # the request message was received.
87 result = self._registration_info.secure_id != context.secure_id
88 context.remove()
89
90 return result
91
92 def send(self, message, urgent=False):
93 """Include a message to be sent in an exchange.
94
95 If urgent is True, an exchange with the server will be
96 scheduled urgently.
97
98 @param message: Same as in L{MessageStore.add}.
99 """
100 if self._message_is_obsolete(message):
101 logging.info(
102 "Response message with operation-id %s was discarded "
103 "because the client's secure ID has changed in the meantime"
104 % message.get('operation-id'))
105 return None
106
107 if "timestamp" not in message:
108 message["timestamp"] = int(self._reactor.time())
109 message_id = self._message_store.add(message)
110 if urgent:
111 self.schedule_exchange(urgent=True)
112 return message_id
113
114 def start(self):
115 """Start scheduling exchanges. The first one will be urgent."""
116 self.schedule_exchange(urgent=True)
117
118 def stop(self):
119 if self._exchange_id is not None:
120 self._reactor.cancel_call(self._exchange_id)
121 self._exchange_id = None
122 if self._notification_id is not None:
123 self._reactor.cancel_call(self._notification_id)
124 self._notification_id = None
125
126 def _handle_accepted_types(self, message):
127 """
128 When the server updates us about the types of message it
129 accepts, update our message store.
130
131 If this makes existing held messages available for sending,
132 urgently exchange messages.
133
134 If new types are made available or old types are dropped a
135 C{("message-type-acceptance-changed", type, bool)} reactor
136 event will be fired.
137 """
138 old_types = set(self._message_store.get_accepted_types())
139 new_types = set(message["types"])
140 diff = get_accepted_types_diff(old_types, new_types)
141 self._message_store.set_accepted_types(new_types)
142 logging.info("Accepted types changed: %s", diff)
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: