# Release 0.39

:material-calendar: 2023-04-10 · :material-list-status: [Full Changelog](https://github.com/srl-labs/containerlab/releases)

## Partial configs for SR OS

Containerlab now supports partial configs for SR OS. This means you can now provide CLI snippets that will be added to the default config. A very useful feature when you want to add a few things to the config, and you don't want to copy the whole config to your lab. #1249

We believe this will make your lab repos cleaner and easier to maintain.

=== "Topology"
    ```yaml
    name: sros_lab
    topology:
      nodes:
        sros:
          kind: vr-sros
          startup-config: myconfig.partial.txt
    ```
=== "`myconfig.partial.txt`"
    ```
    configure {
        router "Base" {
            static-routes {
                route 192.168.200.200/32 route-type unicast {
                    next-hop "192.168.0.1" {
                        admin-state enable
                    }
                }
            }
        }
    }
    ```

The partial config can be provided as a [local file](../manual/kinds/vr-sros.md#partial-startup-config), [remote URL](../manual/kinds/vr-sros.md#remote-partial-files) or even [embedded](../manual/kinds/vr-sros.md#embedded-partial-files), yay!

Learn more about partial configs for SR OS [here](../manual/kinds/vr-sros.md#user-defined-config).

## Embedded startup-configs

The changes made for allowing SR OS to have partial configs also allowed all other nodes to enjoy embedding startup-configs into the topology file.

For example, this is a perfectly valid way to provide partial config for a Nokia SR Linux node:

```yaml
name: srl

topology:
  nodes:
    srl:
      kind: nokia_srlinux
      image: ghcr.io/nokia/srlinux:22.11.2
      startup-config: |
        system information location "I am embedded config"
```

## Node filtering

One of the most requested features is finally there. Users wanted to be able to deploy only a subset of nodes defined in their topology file. Usually, this was driven by the need to control the resource usage of the lab and optimize the deployment time.

Containerlab now allows users to provide a list of nodes to deploy, destroy, save, and graph commands to scope the operation to only those nodes. #1298

Check out [Node Filtering docs](../manual/node-filtering.md) for details.

## CPU and Memory setting for SR OS nodes

With [hellt/vrnetlab](https://github.com/hellt/vrnetlab/releases/tag/v0.10.1) release v0.10.1 we support setting the CPU and Memory for SR OS nodes.

Before that feature was available, the CPU and Memory were set to the default values for a particular SR OS variant. This was not ideal as requirements change over time and when resources are underprovisioned, the node may not be able to start.

Now you can set the CPU and Memory for SR OS nodes directly in the topology file:

```yaml
# distrubuted node
    sr:
      kind: vr-sros
      type: sr-1e
      license: sros22.lic
      env:
        CP_MEMORY: 6 # CPM MEM
        CP_CPU: 4    # CPM CPU
        LC_MEMORY: 6 # Line card MEM
        LC_CPU: 4    # Line card CPU
        
# integrated
    sr:
      kind: vr-sros
      type: sr-1
      license: sros22.lic
      env:
        MEMORY: 6
        CPU: 4
```

## RARE joins Containerlab

We are happy to announce that [RARE](../manual/kinds/rare-freertr.md) Network OS is now supported by Containerlab. RARE stands for Router for Academia, Research & Education.

## Securely connecting to labs with Border0 (experimental)

With mysocketio rebranding to border0 we had to revisit APIs for creating secured remote access to labs. This is an experimental feature and is not yet fully supported. #1131
