def upgrade(self): print "upgrade()" # clean from any leftover pyc files for f in glob.glob("%s/*.pyc" % self.upgradefilesdir): os.unlink(f) print "Starting for upgrade" assert(self.ec2instance) assert(self.ssh_hostname) # copy the profile if os.path.exists(self.profile): print "Copying '%s' to image overrides" % self.profile self._runInImage(["mkdir","-p","/etc/update-manager/release-upgrades.d"]) self._copyToImage(self.profile, "/etc/update-manager/release-upgrades.d/") # copy test repo sources.list (if needed) test_repo = self.config.getWithDefault("NonInteractive","AddRepo","") if test_repo: test_repo = os.path.join(os.path.dirname(self.profile), test_repo) self._copyToImage(test_repo, "/etc/apt/sources.list.d") sourcelist = self.getSourcesListFile() apt_pkg.Config.Set("Dir::Etc", os.path.dirname(sourcelist.name)) apt_pkg.Config.Set("Dir::Etc::sourcelist", os.path.basename(sourcelist.name)) sources = SourcesList(matcherPath=".") sources.load(test_repo) # add the uri to the list of valid mirros in the image for entry in sources.list: if (not (entry.invalid or entry.disabled) and entry.type == "deb"): print "adding %s to mirrors" % entry.uri self._runInImage(["echo '%s' >> /upgrade-tester/mirrors.cfg" % entry.uri]) # check if we have a bzr checkout dir to run against or # if we should just run the normal upgrader if (os.path.exists(self.upgradefilesdir) and self.config.getWithDefault("NonInteractive", "UseUpgraderFromBzr", True)): self._copyUpgraderFilesFromBzrCheckout() ret = self._runBzrCheckoutUpgrade() else: ret = self._runInImage(["do-release-upgrade","-d", "-f","DistUpgradeViewNonInteractive"]) print "dist-upgrade.py returned: %i" % ret # copy the result print "coyping the result" self._copyFromImage("/var/log/dist-upgrade/*",self.resultdir) # stop the machine print "Shuting down the VM" self.stop_instance() return True
def upgrade(self): print "upgrade()" # clean from any leftover pyc files for f in glob.glob("%s/*.pyc" % self.upgradefilesdir): os.unlink(f) print "Starting for upgrade" if not self.start(): return False # copy the profile if os.path.exists(self.profile): print "Copying '%s' to image overrides" % self.profile self._runInImage(["mkdir","-p","/etc/update-manager/release-upgrades.d"]) self._copyToImage(self.profile, "/etc/update-manager/release-upgrades.d/") # copy test repo sources.list (if needed) test_repo = self.config.getWithDefault("NonInteractive","AddRepo","") if test_repo: test_repo = os.path.join(os.path.dirname(self.profile), test_repo) self._copyToImage(test_repo, "/etc/apt/sources.list.d") sourcelist = self.getSourcesListFile() apt_pkg.Config.Set("Dir::Etc", os.path.dirname(sourcelist.name)) apt_pkg.Config.Set("Dir::Etc::sourcelist", os.path.basename(sourcelist.name)) sources = SourcesList(matcherPath=".") sources.load(test_repo) # add the uri to the list of valid mirros in the image self._runInImage(["mkdir","-p","/upgrade-tester"]) self._runInImage(["echo -e '[Sources]\nValidMirrors=/upgrade-tester/new_mirrors.cfg' > /etc/update-manager/release-upgrades.d/new_mirrors.cfg"]) for entry in sources.list: if (not (entry.invalid or entry.disabled) and entry.type == "deb"): print "adding %s to mirrors" % entry.uri self._runInImage(["echo '%s' >> /upgrade-tester/new_mirrors.cfg" % entry.uri]) # upgrade *before* the regular upgrade runs if self.config.getWithDefault("NonInteractive", "AddRepoUpgradeImmediately", False): self._runInImage(["apt-get", "update"]) self._runInImage(["DEBIAN_FRONTEND=noninteractive","apt-get","-y","dist-upgrade", "--allow-unauthenticated"]) apt_conf = self.config.getWithDefault("NonInteractive","AddAptConf","") if apt_conf: apt_conf = os.path.join(os.path.dirname(self.profile), apt_conf) self._copyToImage(apt_conf, "/etc/apt/apt.conf.d") # check if we have a bzr checkout dir to run against or # if we should just run the normal upgrader cmd_prefix=[] if not self.config.getWithDefault("NonInteractive","ForceOverwrite", False): print "Disabling ForceOverwrite" cmd_prefix = ["export RELEASE_UPGRADE_NO_FORCE_OVERWRITE=1;"] if (os.path.exists(self.upgradefilesdir) and self.config.getWithDefault("NonInteractive", "UseUpgraderFromBzr", True)): print "Using ./DistUpgrade/* for the upgrade" self._copyUpgraderFilesFromBzrCheckout() ret = self._runBzrCheckoutUpgrade(cmd_prefix) else: print "Using do-release-upgrade for the upgrade" ret = self._runInImage(cmd_prefix+["do-release-upgrade","-d", "-f","DistUpgradeViewNonInteractive"]) print "dist-upgrade.py returned: %i" % ret # copy the result print "coyping the result" self._copyFromImage("/var/log/dist-upgrade/*",self.resultdir) # give the ssh output extra time time.sleep(10) # stop the machine print "Shuting down the VM" self.stop() return (ret == 0)