コード例 #1
0
ファイル: template.py プロジェクト: mhdonnelly/kp-canvas
    def __init__(self, template=None, user=None):
        self._name = None
        self._user = user
        self._uuid = None
        self._version = None
        self._title = None
        self._description = None

        self._includes = []  # includes in template
        self._includes_resolved = [
        ]  # data structs for all includes in template
        self._meta = {}

        self._repos = RepoSet()  # repos in template
        self._includes_repos = RepoSet()  # repos from includes in template
        self._delta_repos = RepoSet()  # repos to add/remove in template

        self._packages = PackageSet()  # packages in template
        self._includes_packages = PackageSet(
        )  # packages from includes in template
        self._delta_packages = PackageSet(
        )  # packages to add/remove in template

        self._stores = []  # remote stores for machine

        self._objects = ObjectSet()  # archive definitions in machine
        self._includes_objects = ObjectSet()  # archive definitions in machine
        self._delta_objects = ObjectSet()  # archive definitions in machine

        self._db = None

        self._parse_template(template)
コード例 #2
0
ファイル: template.py プロジェクト: mhdonnelly/kp-canvas
    def clear(self):
        """
        Clears all includes, objects, packages, repos and stores from the
        template. Also removes all kickstart meta information.

        Args:
          None

        Returns:
          Nothing.
        """

        self._includes = []  # includes in template
        self._includes_resolved = [
        ]  # data structs for all includes in template
        self._repos = RepoSet()  # repos in template
        self._includes_repos = RepoSet()  # repos from includes in template
        self._delta_repos = RepoSet()  # repos to add/remove in template

        self._packages = PackageSet()  # packages in template
        self._includes_packages = PackageSet(
        )  # packages from includes in template
        self._delta_packages = PackageSet(
        )  # packages to add/remove in template

        self._stores = []  # remote stores for machine

        self._objects = ObjectSet()  # archive definitions in machine
        self._includes_objects = ObjectSet()  # archive definitions in machine
        self._delta_objects = ObjectSet()  # archive definitions in machine

        if 'kickstart' in self._meta:
            del self._meta['kickstart']
コード例 #3
0
ファイル: test_object.py プロジェクト: Reaver385/canvas
    def test_objectset_uniqueness(self):
        o1 = Object({
            'name': 'foo',
            'data': 'abc',
            'checksum': {
                'sha256':
                'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
            },
            'actions': []
        })

        o2 = Object({
            'name': 'bar',
            'data': 'abc',
            'checksum': {
                'sha256':
                'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
            },
            'actions': []
        })

        o3 = Object({
            'name': 'baz',
            'data': 'xyz',
            'checksum': {
                'sha256':
                '3608bca1e44ea6c4d268eb6db02260269892c0b42b86bbf1e77a6fa16c3c9282'
            },
            'actions': []
        })

        l1 = ObjectSet()

        l1.add(o1)
        self.assertTrue(len(l1) == 1)

        # adding second object of same checksum should overwrite
        # existing object with undefined arch
        l1.add(o2)
        self.assertTrue(len(l1) == 1)
        self.assertTrue(ObjectSet([o2]), l1)

        l1.add(o3)
        self.assertTrue(len(l1) == 2)
        self.assertTrue(ObjectSet([o2, o3]), l1)
コード例 #4
0
ファイル: test_object.py プロジェクト: Reaver385/canvas
    def test_objectset_update(self):
        o1 = Object({
            'name': 'foo',
            'data': 'abc',
            'checksum': {
                'sha256':
                'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
            },
            'actions': []
        })

        o2 = Object({
            'name': 'bar',
            'data': 'abc',
            'checksum': {
                'sha256':
                'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
            },
            'actions': []
        })

        o3 = Object({
            'name': 'baz',
            'data': 'xyz',
            'checksum': {
                'sha256':
                '3608bca1e44ea6c4d268eb6db02260269892c0b42b86bbf1e77a6fa16c3c9282'
            },
            'actions': []
        })

        l1 = ObjectSet()
        l2 = ObjectSet()

        l1.add(o2)
        l1.add(o3)

        self.assertEqual(ObjectSet([o2, o3]), l1)

        l2.add(o1)
        self.assertEqual(ObjectSet([o1]), l2)

        l2.update(l1)
        self.assertEqual(ObjectSet([o2, o3]), l2)
コード例 #5
0
ファイル: test_object.py プロジェクト: Reaver385/canvas
    def test_objectset_difference(self):
        o1 = Object({
            'name': 'foo',
            'data': 'abc',
            'checksum': {
                'sha256':
                'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
            },
            'actions': []
        })

        o2 = Object({
            'name': 'bar',
            'data': 'abc',
            'checksum': {
                'sha256':
                'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
            },
            'actions': []
        })

        o3 = Object({
            'name': 'baz',
            'data': 'xyz',
            'checksum': {
                'sha256':
                '3608bca1e44ea6c4d268eb6db02260269892c0b42b86bbf1e77a6fa16c3c9282'
            },
            'actions': []
        })

        l1 = ObjectSet([o1, o3])
        l2 = ObjectSet([o2])

        (luniq1, luniq2) = l1.difference(l2)

        self.assertEqual(ObjectSet([o3]), luniq1)
        self.assertEqual(ObjectSet([]), luniq2)
コード例 #6
0
ファイル: template.py プロジェクト: Reaver385/canvas
    def _parse_template(self, template):
        # parse the string short form
        if isinstance(template, str):
            (user, name, version) = self._parse_unv(template)

            if user:
                self._user = user

            if name:
                self._name = name

            if version:
                self._version = version

            if not self._user or len(self._user) == 0:
                raise ValueError("template format invalid")

            if not self._name or len(self._name) == 0:
                raise ValueError("template format invalid")

        # parse the dict form, the most common form and directly
        # relates to the json structures returned by canvas server
        elif isinstance(template, dict):
            self._uuid = template.get('uuid', None)
            self._user = template.get('user', template.get('username', None))
            self._name = template.get('stub', None)
            self._version = template.get('version', None)
            self._title = template.get('name', self._name)
            self._description = template.get('description', None)

            self._includes = template.get('includes', [])

            self._repos = RepoSet(
                Repository(r, template=self.unv)
                for r in template.get('repos', []))
            self._packages = PackageSet(
                Package(p, template=self.unv)
                for p in template.get('packages', []))

            self._stores = template.get('stores', [])
            self._objects = ObjectSet(
                Object(o) for o in template.get('objects', []))

            self._meta = template.get('meta', {})
コード例 #7
0
    def test_template_create_empty(self):
        t1 = Template({})

        self.assertEqual(None, t1.name)
        self.assertEqual(None, t1.user)
        self.assertEqual(None, t1.uuid)
        self.assertEqual(None, t1.description)

        self.assertEqual([], t1.includes)

        self.assertEqual([], t1._includes_resolved)
        self.assertEqual({}, t1._meta)

        self.assertEqual(RepoSet(), t1.repos)
        self.assertEqual(RepoSet(), t1._includes_repos)
        self.assertEqual(RepoSet(), t1._delta_repos)

        self.assertEqual(PackageSet(), t1._packages)
        self.assertEqual(PackageSet(), t1._includes_packages)
        self.assertEqual(PackageSet(), t1._delta_packages)

        self.assertEqual([], t1._stores)
        self.assertEqual(ObjectSet(), t1._objects)