From 608a9999c43d3500a13f03621c3982db505ec781 Mon Sep 17 00:00:00 2001 From: Ben Howard Date: Thu, 31 Jan 2013 11:42:39 -0700 Subject: Import patches-unapplied version 1.3-0ubuntu2 to ubuntu/raring-proposed Imported using git-ubuntu import. Changelog parent: b62390fb93897d9f873c0d23ddfcd7d2def7204f New changelog entries: * Changed detection of whether or not agent is packaged to using dpkg command. (LP: #1111690) --- debian/changelog | 7 +++++++ debian/default | 4 ---- debian/patches/000_use_packaged_upstart | 23 ++++++++++++++--------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/debian/changelog b/debian/changelog index cab8551..242022a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +walinuxagent (1.3-0ubuntu2) raring; urgency=low + + * Changed detection of whether or not agent is packaged to using + dpkg command. (LP: #1111690) + + -- Ben Howard Thu, 31 Jan 2013 11:42:39 -0700 + walinuxagent (1.3-0ubuntu1) raring; urgency=low * New upstream version (LP: #1101371) diff --git a/debian/default b/debian/default index a6bdf50..a17174c 100644 --- a/debian/default +++ b/debian/default @@ -1,6 +1,2 @@ # To disable the Windows Azure Agent, set WALINUXAGENT_ENABLED=0 WALINUXAGENT_ENABLED=1 - -# Setting this variable to anything other than 1, runs the script -# in stand-alone mode. This is heavily, heavily discouraged. -WAXLINUXAGENT_PACKAGED=1 diff --git a/debian/patches/000_use_packaged_upstart b/debian/patches/000_use_packaged_upstart index fa933a8..463ae57 100644 --- a/debian/patches/000_use_packaged_upstart +++ b/debian/patches/000_use_packaged_upstart @@ -8,21 +8,26 @@ Verbose = False WaAgent = None DiskActivated = False -@@ -84,6 +85,18 @@ def DetectLinuxDistro(): +@@ -79,11 +80,23 @@ def IsLinux(): + + def DetectLinuxDistro(): + global LinuxDistro ++ global PackagedForDistro + if os.path.isfile("/etc/redhat-release"): + LinuxDistro = "RedHat" return True if os.path.isfile("/etc/lsb-release") and "Ubuntu" in GetFileContents("/etc/lsb-release"): LinuxDistro = "Ubuntu" + + # Should this run as if it is packaged Ubuntu? -+ if os.path.isfile("/etc/default/walinuxagent"): -+ try: -+ with open('/etc/default/walinuxagent') as f: -+ for line in f.readlines(): -+ if line == "WAXLINUXAGENT_PACKAGED=1": -+ PackagedForDistro = "Ubuntu" ++ try: ++ cmd="dpkg -S %s" % os.path.basename(__file__) ++ retcode, krn = RunSafe(cmd) ++ if not retcode: ++ PackagedForDistro = "Ubuntu" + -+ except IOError as e: -+ pass ++ except IOError as e: ++ pass + return True if os.path.isfile("/etc/debian_version"): -- cgit v1.2.3 From 260b4feb941437777b8560b8c16e2dda853fd42b Mon Sep 17 00:00:00 2001 From: Ben Howard Date: Thu, 31 Jan 2013 11:42:39 -0700 Subject: 000_use_packaged_upstart No DEP3 Subject or Description header found Gbp-Pq: 000_use_packaged_upstart. --- waagent | 57 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/waagent b/waagent index 680c0d8..0469435 100644 --- a/waagent +++ b/waagent @@ -52,6 +52,7 @@ ProtocolVersion = "2011-12-31" Config = None LinuxDistro = "UNKNOWN" +PackagedForDistro = "UNKNOWN" Verbose = False WaAgent = None DiskActivated = False @@ -79,11 +80,23 @@ def IsLinux(): def DetectLinuxDistro(): global LinuxDistro + global PackagedForDistro if os.path.isfile("/etc/redhat-release"): LinuxDistro = "RedHat" return True if os.path.isfile("/etc/lsb-release") and "Ubuntu" in GetFileContents("/etc/lsb-release"): LinuxDistro = "Ubuntu" + + # Should this run as if it is packaged Ubuntu? + try: + cmd="dpkg -S %s" % os.path.basename(__file__) + retcode, krn = RunSafe(cmd) + if not retcode: + PackagedForDistro = "Ubuntu" + + except IOError as e: + pass + return True if os.path.isfile("/etc/debian_version"): LinuxDistro = "Debian" @@ -99,12 +112,21 @@ def IsRedHat(): def IsUbuntu(): return "Ubuntu" in LinuxDistro +def IsPackagedUbuntu(): + return "Ubuntu" in PackagedForDistro + def IsDebian(): return IsUbuntu() or "Debian" in LinuxDistro def IsSuse(): return "Suse" in LinuxDistro +def IsPackaged(): + if PackagedForDistro == "UNKNOWN": + return False + + return True + def UsesRpm(): return IsRedHat() or IsSuse() @@ -2252,14 +2274,14 @@ def Install(): shutil.move(a, ".") Warn("Moved " + a + " -> " + LibDir + "/" + GetLastPathElement(a) ) - if IsUbuntu(): + if IsUbuntu() and not IsPackagedUbuntu(): # Support for Ubuntu's upstart configuration filename="waagent.conf" filepath = "/etc/init/" + filename SetFileContents(filepath, Init_Ubuntu) os.chmod(filepath, 0644) - else: + elif not IsPackagedUbuntu(): # Regular init.d configurations filename = "waagent" filepath = "/etc/init.d/" + filename @@ -2273,6 +2295,7 @@ def Install(): SetFileContents(filepath, init[0]) os.chmod(filepath, 0755) Run(init[1]) + if os.path.isfile("/etc/waagent.conf"): try: os.remove("/etc/waagent.conf.old") @@ -2310,12 +2333,30 @@ def Uninstall(): if a == 0: Error("Unable to detect Linux Distribution.") return 1 - Run("service " + filename + " stop") - cmd = ["chkconfig --del " + filename, - "update-rc.d -f " + filename + " remove", - "insserv -r " + filename][a - 1] - Run(cmd) - for f in os.listdir(LibDir) + ["/etc/init/waagent.conf","/etc/init.d/" + filename, "/etc/waagent.conf", "/etc/logrotate.d/waagent", "/etc/sudoers.d/waagent"]: + + # Managed by dpkg for Packaged Ubuntu + if not IsPackaged(): + Run("service " + filename + " stop") + cmd = ["chkconfig --del " + filename, + "update-rc.d -f " + filename + " remove", + "insserv -r " + filename][a - 1] + Run(cmd) + + remove_f = [ + "/etc/waagent.conf", + "/etc/logrotate.d/waagent", + "/etc/sudoers.d/waagent", + ] + + # For packaged Ubuntu, the script should let the packaging + # manage the removal of these files + if not IsPackagedUbuntu(): + remove_f.append([ + "/etc/init/waagent.conf", + "/etc/init.d/" + filename, + ]) + + for f in os.listdir(LibDir) + remove_f: try: os.remove(f) except: -- cgit v1.2.3