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(storage): initial support for a config model #1763

Merged

Conversation

joseivanlopez
Copy link
Contributor

@joseivanlopez joseivanlopez commented Nov 14, 2024

A config model is an abstraction of the storage config to make easier for clients to deal with the storage config. Clients (e.g., the web UI) do not need to understand the complexity of the storage config. Instead of that, clients directly work with the config model for both reading the config and applying changes.

Example of storage config:

{ 
  "drives": [
    {
      "search": {
        "condition": { "name": "/dev/vda" },
        "max": 1,
        "ifNotFound": "error"
      },
      "partitions": [
        { "search": "*", "delete": true },
        { "generate": "default" }
      ]
    }
  ]
}

And its equivalence in the config model:

{
  "drives": [
    {
      "name": "/dev/vda",
      "spacePolicy": "delete",
      "partitions": [
        { "name": "/dev/vda1", "delete": true },
        { "name": "/dev/vda2", "delete": true },
        {
          "mountPath": "/",
          "filesystem": {
            "default": true,
            "type": "btrfs",
            "snapshots": false
          },
          "size": {
            "default": true,
            "min": 2048
          }
        }
      ]
    }
  ]
}

Note: this PR replaces #1748 in which the model was implemented in the web side.

@joseivanlopez joseivanlopez force-pushed the storage-config-model branch 2 times, most recently from 03f1590 to 7e2132b Compare November 15, 2024 07:17
@joseivanlopez joseivanlopez changed the title feat(storage): add config model feat(storage): initial support for a config model in the backend service Nov 19, 2024
@joseivanlopez joseivanlopez changed the title feat(storage): initial support for a config model in the backend service feat(storage): initial support for a config model Nov 19, 2024
@joseivanlopez joseivanlopez marked this pull request as ready for review November 19, 2024 10:03
Copy link
Contributor

@ancorgs ancorgs left a comment

Choose a reason for hiding this comment

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

LGTM. I have been playing with the result during Hack Week and it seems to work.

@joseivanlopez joseivanlopez merged commit d7cc5fc into agama-project:storage-config-ui Nov 26, 2024
4 of 5 checks passed
joseivanlopez added a commit that referenced this pull request Dec 19, 2024
* Adds HTTP/D-Bus API to apply changes in the config model, see
#1763.
* UI: allow selecting the space policy for each device.
* UI: adapt page for configuring the custom space policy of a device. 

![localhost_8080_
(19)](https://github.com/user-attachments/assets/276dff10-beaa-4d86-9081-12699a270c28)
@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