]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
[RM-12439] Add Apt Class for pkg management
authorTravis Rhoden <trhoden@redhat.com>
Fri, 31 Jul 2015 23:46:00 +0000 (16:46 -0700)
committerTravis Rhoden <trhoden@redhat.com>
Mon, 3 Aug 2015 22:55:18 +0000 (15:55 -0700)
Signed-off-by: Travis Rhoden <trhoden@redhat.com>
ceph_deploy/util/pkg_managers.py

index 20ab161f0ae059c42de0f89295cc0acd84f2f5ce..a367e6d9ec2017233514785f0c17404f4f8712c3 100644 (file)
@@ -276,3 +276,51 @@ class Yum(RPMManagerBase):
             if self.remote_info.normalized_release.int_major != 6:
                 package_name = 'yum-priorities'
         self.install(package_name)
+
+
+class Apt(PackageManager):
+    """
+    Apt package management
+    """
+
+    executable = [
+        'env',
+        'DEBIAN_FRONTEND=noninteractive',
+        'DEBIAN_PRIORITY=critical',
+        'apt-get',
+        '--assume-yes',
+        '-q',
+    ]
+
+    def install(self, packages, force_confnew=False):
+        if isinstance(packages, str):
+            packages = [packages]
+
+        cmd = self.executable + [
+            '--no-install-recommends',
+            'install'
+        ]
+
+        if force_confnew:
+            cmd.extend(['-o', 'Dpkg::Options::=--force-confnew'])
+        cmd.extend(packages)
+        return self._run(cmd)
+
+    def remove(self, packages, purge=False):
+        if isinstance(packages, str):
+            packages = [packages]
+
+        cmd = self.executable + [
+            '-f',
+            '--force-yes',
+            'remove'
+        ]
+
+        if purge:
+            cmd.append('--purge')
+        cmd.extend(packages)
+        return self._run(cmd)
+
+    def clean(self):
+        cmd = self.executable + ['update']
+        return self._run(cmd)