~allenap/maas/mpontillo--allow-commissioning-non-lts

« back to all changes in this revision

Viewing changes to src/maasserver/models/tests/test_bootresource.py

  • Committer: MAAS Lander
  • Author(s): Lee Trager
  • Date: 2016-10-06 17:34:26 UTC
  • mfrom: (5429.4.5 hwe_rolling)
  • Revision ID: maas_lander-20161006173426-fap6rsnm9czideia
[r=blake-rouse][bug=][author=ltrager] Add support for hwe-rolling kernels

hwe-rolling kernels are metapackages which depend on the latest kernel available. Instead of duplicating the kernels in the stream lp:maas-images will determine if an already published kernel is a dependency of a rolling kernel and set the 'rolling' field to True. This MP stores that field in the BootResource table. When listing supported kernels the region appends the hwe-rolling kernels if one of the supported kernels has the rolling field set true. The rack now creates hard links for hwe-rolling kernels if the 'rolling' field is set true. This allows grub to show its booting a rolling kernel even though it didn't need to download a second set of files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
606
606
            "name": "ubuntu/trusty",
607
607
            "arch": "amd64",
608
608
            "subarch": "generic",
609
 
            "kernels": ["hwe-t", "hwe-u", "hwe-v"],
 
609
            "kernels": ["hwe-t", "hwe-u", "hwe-v", "hwe-rolling"],
610
610
            }),
611
611
        ("ubuntu/vivid", {
612
612
            "name": "ubuntu/vivid",
613
613
            "arch": "i386",
614
614
            "subarch": "generic",
615
 
            "kernels": ["hwe-v"],
 
615
            "kernels": ["hwe-v", "hwe-rolling"],
616
616
            }),
617
617
        ("ubuntu/precise", {
618
618
            "name": "ubuntu/precise",
619
619
            "arch": "armfh",
620
620
            "subarch": "generic",
621
 
            "kernels": ["hwe-p", "hwe-t", "hwe-v"],
 
621
            "kernels": ["hwe-p", "hwe-t", "hwe-v", "hwe-rolling"],
622
622
            }),
623
623
        ("ubuntu/wily", {
624
624
            "name": "ubuntu/wily",
630
630
            "name": "ubuntu/xenial",
631
631
            "arch": "amd64",
632
632
            "subarch": "generic",
633
 
            "kernels": ["hwe-16.04", "hwe-16.04-lowlatency"],
 
633
            "kernels": [
 
634
                "hwe-16.04", "hwe-16.04-lowlatency", "hwe-rolling",
 
635
                "hwe-rolling-lowlatency"],
634
636
            }),
635
637
        )
636
638
 
646
648
                    generic_kernels.append(i)
647
649
                factory.make_usable_boot_resource(
648
650
                    name=self.name, rtype=BOOT_RESOURCE_TYPE.SYNCED,
649
 
                    architecture="%s/%s" % (self.arch, i), kflavor=kflavor)
 
651
                    architecture="%s/%s" % (self.arch, i), kflavor=kflavor,
 
652
                    rolling=True)
650
653
                factory.make_incomplete_boot_resource(
651
654
                    name=self.name, rtype=BOOT_RESOURCE_TYPE.SYNCED,
652
655
                    architecture="%s/%s" % (
656
659
            generic_kernels = self.kernels
657
660
            factory.make_usable_boot_resource(
658
661
                name=self.name, rtype=BOOT_RESOURCE_TYPE.SYNCED,
659
 
                architecture="%s/%s" % (self.arch, self.subarch))
 
662
                architecture="%s/%s" % (self.arch, self.subarch), rolling=True)
660
663
        self.assertEqual(
661
664
            sorted(self.kernels),
662
665
            sorted(BootResource.objects.get_usable_hwe_kernels(
690
693
            "linux-image-generic-lts-trusty",
691
694
            BootResource.objects.get_kpackage_for_node(node))
692
695
 
 
696
    def test__returns_hwe_rolling(self):
 
697
        node = factory.make_Node()
 
698
        for hwe_kernel, kpackage in (
 
699
                ['hwe-rolling', 'linux-generic-hwe-rolling'],
 
700
                ['hwe-rolling-lowlatency', 'linux-lowlatency-hwe-rolling'],
 
701
                ['hwe-rolling-edge', 'linux-generic-hwe-rolling-edge'],
 
702
                [
 
703
                    'hwe-rolling-lowlatency-edge',
 
704
                    'linux-lowlatency-hwe-rolling-edge'],):
 
705
            node.hwe_kernel = hwe_kernel
 
706
            self.assertEqual(
 
707
                kpackage, BootResource.objects.get_kpackage_for_node(node))
 
708
 
 
709
    def test__returns_none(self):
 
710
        node = factory.make_Node()
 
711
        self.assertIsNone(BootResource.objects.get_kpackage_for_node(node))
 
712
 
693
713
 
694
714
class TestBootResource(MAASServerTestCase):
695
715
    """Tests for the `BootResource` model."""