Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(rust): run postscripts in a chroot #1792

Merged
merged 9 commits into from
Nov 29, 2024
Merged

Conversation

imobachgs
Copy link
Contributor

@imobachgs imobachgs commented Nov 29, 2024

Problem

https://trello.com/c/I8bWv2ZR

The current scripting support does not allow using AutoYaST chroot-like scripts. For instance, if you want to enable a system service at the end of the installation, you need to deal with the chroot yourself.

Solution

This change extends the post-scripts to run on a chroot on the target system. A definition like the following will enable the sshd daemon at the end of the installation:

scripts: {
  post: [
    { name: 'test', body: '#!/bin/bash\nsystemctl enable sshd', chroot: true },
  ],
}

Now, chroot-ed postscripts are the default. Since you most likely want to run postscripts on a chroot, we are supporting chroot: false for backward compatibility reasons.

Refactoring

The PR contains a heavy refactoring of the scripts model. Now, we are using an enum-based approach that makes it easier to cope with the potential differences between script types, given that not all are equal. We followed that approach in the network area and it worked quite well.

By now, the only difference is the chroot attribute. However, in the future, we expect that prescripts and postscripts will get support for additional features, like progress reporting, that will not be available for init scripts.

Testing

  • Tested manually

@imobachgs imobachgs force-pushed the run-chrooted-scripts branch from 8c438cc to f6d7050 Compare November 29, 2024 12:18
@imobachgs imobachgs marked this pull request as ready for review November 29, 2024 12:20
@coveralls
Copy link

coveralls commented Nov 29, 2024

Pull Request Test Coverage Report for Build 12087532632

Details

  • 41 of 94 (43.62%) changed or added relevant lines in 4 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.05%) to 70.981%

Changes Missing Coverage Covered Lines Changed/Added Lines %
rust/agama-lib/src/scripts/client.rs 0 1 0.0%
rust/agama-server/src/scripts/web.rs 0 2 0.0%
rust/agama-lib/src/scripts/store.rs 0 11 0.0%
rust/agama-lib/src/scripts/model.rs 41 80 51.25%
Totals Coverage Status
Change from base Build 12082384586: -0.05%
Covered Lines: 16953
Relevant Lines: 23884

💛 - Coveralls

@jreidinger
Copy link
Contributor

Overall change looks good, but I expect to see somewhere documentation for it including example of usage.

@imobachgs imobachgs merged commit dc02a50 into master Nov 29, 2024
6 checks passed
@imobachgs imobachgs deleted the run-chrooted-scripts branch November 29, 2024 16:05
@imobachgs imobachgs mentioned this pull request Jan 10, 2025
imobachgs added a commit that referenced this pull request Jan 13, 2025
Update to release version 11.

* #1495
* #1564
* #1617
* #1618
* #1625
* #1626
* #1627
* #1628
* #1630
* #1631
* #1632
* #1633
* #1634
* #1635
* #1636
* #1639
* #1640
* #1641
* #1642
* #1643
* #1644
* #1645
* #1646
* #1647
* #1648
* #1649
* #1650
* #1651
* #1652
* #1654
* #1655
* #1656
* #1657
* #1660
* #1663
* #1666
* #1667
* #1668
* #1670
* #1671
* #1673
* #1674
* #1675
* #1676
* #1677
* #1681
* #1682
* #1683
* #1684
* #1687
* #1688
* #1689
* #1690
* #1691
* #1692
* #1693
* #1694
* #1695
* #1696
* #1698
* #1699
* #1702
* #1703
* #1704
* #1705
* #1707
* #1708
* #1709
* #1710
* #1711
* #1712
* #1713
* #1714
* #1715
* #1716
* #1717
* #1718
* #1720
* #1721
* #1722
* #1723
* #1727
* #1728
* #1729
* #1731
* #1732
* #1733
* #1734
* #1735
* #1736
* #1737
* #1740
* #1741
* #1743
* #1744
* #1745
* #1746
* #1751
* #1753
* #1754
* #1755
* #1757
* #1762
* #1763
* #1764
* #1765
* #1766
* #1767
* #1769
* #1771
* #1772
* #1773
* #1774
* #1777
* #1778
* #1785
* #1786
* #1787
* #1788
* #1789
* #1790
* #1791
* #1792
* #1793
* #1794
* #1795
* #1796
* #1797
* #1798
* #1799
* #1800
* #1802
* #1803
* #1804
* #1805
* #1807
* #1808
* #1809
* #1810
* #1811
* #1812
* #1814
* #1815
* #1821
* #1822
* #1823
* #1824
* #1825
* #1826
* #1827
* #1828
* #1830
* #1831
* #1832
* #1833
* #1834
* #1835
* #1836
* #1837
* #1838
* #1839
* #1840
* #1841
* #1842
* #1843
* #1844
* #1845
* #1847
* #1848
* #1849
* #1850
* #1851
* #1854
* #1855
* #1856
* #1857
* #1860
* #1861
* #1863
* #1864
* #1865
* #1866
* #1867
* #1871
* #1872
* #1873
* #1875
* #1876
* #1877
* #1878
* #1880
* #1881
* #1882
* #1883
* #1884
* #1885
* #1886
* #1888
* #1889
* #1890
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants