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): probe after running pre-scripts #1735

Merged
merged 7 commits into from
Nov 7, 2024
Merged

feat(rust): probe after running pre-scripts #1735

merged 7 commits into from
Nov 7, 2024

Conversation

imobachgs
Copy link
Contributor

Problem

The typical use cases for pre-scripts are:

  • Modifying the profile.
  • Extending the installation media (adding some repository).
  • Activating some hardware.

About the first use case, customers coming from AutoYaST can still use their old profiles because the pre-scripts will continue to work. For Agama, we could find a better way to modify the profile in place.

However, about the other use cases, we might need the scripts to run before system probing. The problem is that, in the single-product scenario, Agama performs the probing from the very beginning. It does not wait for a profile or the UI to start.

Solution

Run the system probing again after running pre-scripts only if the system is already in the config phase.

Drawback

As a side effect, importing a profile containing a pre-script causes the storage proposal to be lost. However, that's not a problem if the profile already contains a storage section, so it is kind of a corner case.

Moreover, the storage service should be responsible for keeping the proposal, which is out of this PR's scope.

Testing

  • Tested manually

@imobachgs imobachgs marked this pull request as ready for review November 7, 2024 14:33
println!(
"{} {}",
style("\u{2713}").bold().green(),
"The profile is valid."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice 👍

scripts_client.run_scripts(ScriptsGroup::Pre).await?;

let status = self.manager_client.status().await;
if status.is_ok_and(|s| s.phase == InstallationPhase::Config) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we have race condition here, that phase is still probing, but already runs, so changes from pre script is not taken into account?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not think so. There are three different phases: "startup" (before selecting a product), "config" (once a product is selected) and "installation" (when performing the real installation). Once the config phase starts, the phase is updated and it does not change again until the installation starts.

@imobachgs imobachgs merged commit 976f695 into master Nov 7, 2024
5 checks passed
@imobachgs imobachgs deleted the pre-scripts branch November 7, 2024 15:48
@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.

2 participants