• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

agama-project / agama / 30006378764
83%
master: 83%

Build:
Build:
LAST BUILD BRANCH: storage-search-partitions
DEFAULT BRANCH: master
Ran 23 Jul 2026 12:19PM UTC
Jobs 3
Files 1051
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 Jul 2026 12:17PM UTC coverage: 83.178% (+0.05%) from 83.13%
30006378764

push

github

web-flow
feat(service): storage logical search operators (#3727)

## Storage logical search operators

Extends the storage search `condition` to support the logical operators
**`and`**, **`or`**, and **`not`**, so device searches can combine
multiple criteria instead of a single flat match.

Previously a `condition` accepted only a single leaf (`name`, `size`, or
partition `number`). Now those leaves can be freely nested inside
operator nodes, evaluated recursively across the full pipeline: JSON
import/export, model conversions, config solvers, and config/model
checkers. The schema and a full set of examples are updated accordingly.

### Operators

- **`and`** — array of conditions; all must match.
- **`or`** — array of conditions; at least one must match.
- **`not`** — single condition; matches when it does *not*.
- Operators nest arbitrarily and wrap the existing leaves (`name`,
`size`, `number`).

### JSON examples

Match drives larger than 10 GiB, excluding `/dev/vdb`:

```json
{
  "search": {
    "condition": {
      "and": [
        { "size": { "greater": "10 GiB" } },
        { "not": { "name": "/dev/vdb" } }
      ]
    }
  }
}
```

Match either of two drives:

```json
{
  "search": {
    "condition": {
      "or": [
        { "name": "/dev/vda" },
        { "name": "/dev/vdb" }
      ]
    }
  }
}
```

Negate a size condition:

```json
{
  "search": {
    "condition": {
      "not": { "size": { "less": "10 GiB" } }
    }
  }
}
```

Nested operators (one of two drives, and not smaller than 1 GiB):

```json
{
  "search": {
    "condition": {
      "and": [
        { "or": [ { "name": "/dev/vda" }, { "name": "/dev/vdb" } ] },
        { "not": { "size": { "less": "1 GiB" } } }
      ]
    }
  }
}
```

Operators also apply to partition searches (using the `number` leaf):

```json
{
  "search": {
    "condition": {
      "and": [
        { "number": 1 },
        { "size": { "greater": "1 GiB" } }
      ]
    }
  }
}
```

4903 of 6839 branches covered (71.69%)

Branch coverage included in aggregate %.

114 of 115 new or added lines in 13 files covered. (99.13%)

25644 of 29886 relevant lines covered (85.81%)

124.24 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
94.44
0.33% service/lib/agama/storage/config_solvers/search_matchers.rb
Subprojects
ID Flag name Job ID Ran Files Coverage
3 service 30006378764.3 23 Jul 2026 12:18PM UTC 324
92.54
GitHub Action Run
3 web 29411422067.3 15 Jul 2026 11:26AM UTC 727
80.02
GitHub Action Run
1 rust 19474749743.1 18 Nov 2025 05:18PM UTC 185
22.45
GitHub Action Run
Source Files on build 30006378764
  • Tree
  • List 1051
  • Changed 48
  • Source Changed 33
  • Coverage Changed 43
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30006378764
  • 79411eaf on github
  • Prev Build on master (#29411422067)
  • Next Build on storage-search (#30010975161)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc