summaryrefslogtreecommitdiff
path: root/debian/patches
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/000_use_package_upstart.patch16
-rw-r--r--debian/patches/000_use_packaged_upstart113
-rw-r--r--debian/patches/series2
3 files changed, 114 insertions, 17 deletions
diff --git a/debian/patches/000_use_package_upstart.patch b/debian/patches/000_use_package_upstart.patch
deleted file mode 100644
index dce93cd..0000000
--- a/debian/patches/000_use_package_upstart.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/waagent
-+++ b/waagent
-@@ -2242,11 +2242,8 @@ def Install():
- Warn("Moved " + a + " -> " + LibDir + "/" + GetLastPathElement(a) )
-
- if IsUbuntu():
-- # Support for Ubuntu's upstart configuration
-- filename="waagent.conf"
-- filepath = "/etc/init/" + filename
-- SetFileContents(filepath, Init_Ubuntu)
-- os.chmod(filepath, 0644)
-+ # Use the Ubuntu packaged upstart job.
-+ Log("Using Ubuntu packaged upstart job. Skipping upstart installation")
-
- else:
- # Regular init.d configurations
diff --git a/debian/patches/000_use_packaged_upstart b/debian/patches/000_use_packaged_upstart
new file mode 100644
index 0000000..fa933a8
--- /dev/null
+++ b/debian/patches/000_use_packaged_upstart
@@ -0,0 +1,113 @@
+--- a/waagent
++++ b/waagent
+@@ -52,6 +52,7 @@ ProtocolVersion = "2011-12-31"
+
+ Config = None
+ LinuxDistro = "UNKNOWN"
++PackagedForDistro = "UNKNOWN"
+ Verbose = False
+ WaAgent = None
+ DiskActivated = False
+@@ -84,6 +85,18 @@ def DetectLinuxDistro():
+ 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"
++
++ 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:
diff --git a/debian/patches/series b/debian/patches/series
index fb42aae..4232496 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1 @@
-000_use_package_upstart.patch
+000_use_packaged_upstart