summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Howard <ben.howard@ubuntu.com>2013-01-18 15:43:08 -0700
committerusd-importer <ubuntu-server@lists.ubuntu.com>2013-01-30 20:03:24 +0000
commitd34256f997e5da4fd5b454aea329e0bf59f7a19e (patch)
treea48f68c0f645a32686b04c384a457b42188aba8c
parentb62390fb93897d9f873c0d23ddfcd7d2def7204f (diff)
downloadvyos-walinuxagent-d34256f997e5da4fd5b454aea329e0bf59f7a19e.tar.gz
vyos-walinuxagent-d34256f997e5da4fd5b454aea329e0bf59f7a19e.zip
000_use_packaged_upstart
No DEP3 Subject or Description header found Gbp-Pq: 000_use_packaged_upstart.
-rw-r--r--waagent57
1 files changed, 49 insertions, 8 deletions
diff --git a/waagent b/waagent
index 680c0d8..8dd4ca2 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
@@ -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: