docs/content/release-notes/0.4.0.md
---
title: "0.4.0"
date: "2016-11-21"
slug: "0-4-0"
menu:
main:
parent: "release-notes"
identifier: 0.4.0
weight: -040
---
## Release Date
2016-11-21 0.4.0
## Features
This release includes a number of new and improved modules, several bugfixes in
the core engine, and enhancements to the internal API to ease the module
creation process.
### Module Improvements
#### LVM
LVM volume creation has been added for Linux based systems
via [#184](https://github.com/asteris-llc/converge/pull/184).
```hcl
lvm.volumegroup "vg-test" {
name = "test"
devices = ["/dev/sda","/dev/sdb"]
}
lvm.logicalvolume "lv-test" {
group = "test"
name = "test"
size = "1G"
depends = ["lvm.volumegroup.vg-test"]
}
filesystem "mnt-me" {
device = "/dev/mapper/test-test"
mount = "/mnt"
fstype = "ext3"
depends = ["lvm.logicalvolume.lv-test"]
}
```
#### APT
Apt package installation has been added
via [#461](https://github.com/asteris-llc/converge/pull/461).
```hcl
package.apt "mc" {
group = "apt"
name = "mc"
state = "present"
}
```
#### Docker Volume
Support for docker volumes has been added
via [#453](https://github.com/asteris-llc/converge/pull/453)
```hcl
docker.volume "elasticsearch" {
name = "elasticsearch"
labels {
environment = "test"
}
state = "present"
force = true
}
```
#### Docker Network
Support for docker networking has been added
via [#477](https://github.com/asteris-llc/converge/pull/477)
```hcl
docker.network "test-network" {
name = "test-network"
state = "present"
force = true
labels {
environment = "test"
}
options {
"com.docker.network.bridge.enable_icc" = "true"
}
internal = false
ipv6 = false
ipam_driver = "default"
ipam_config {
subnet = "192.168.129.0/24"
gateway = "192.168.129.1"
aux_addresses {
router = "192.168.129.40"
printer = "192.168.129.41"
}
}
}
```
#### User Module
Users can now be modified thanks
to [#434](https://github.com/asteris-llc/converge/pull/434). This change also
adds several new fields to the user module which can be used during user
creation or modification including:
- `create_home` to create a home directory for a user
- `move_dir` to move contents of a users home directory if it changes
- `skel_dir` to specify a skeleton directory to use when creating a user
### Engine Improvements
### Module API Enhancements
The module authoring API has been updated to make it easier to develop modules.
#### Non-empty Struct Tags
Resources now support the `nonempty` struct tag as demonstrated by this snippet
from the user module:
```go
type Preparer struct {
// Username is the user login name.
Username string `hcl:"username" required:"true" nonempty:"true"`
```
when `nonempty:"true"` is set, an error will be returned if the user sets the
value of a field to the zero value for it's type.
#### Time Duration Types
Resource structs may now use `time.Duration` as a field type. Duration strings
will be parsed as a time duration automatically; numeric values will be treated
as a time in seconds.
## Bug Fixes
Please refer to the [changelog](https://github.com/asteris-llc/converge/blob/master/CHANGELOG.md) for
a detailed report.
## Support
We provide support via [the Converge Slack team](http://converge-slack.aster.is/) and through [GitHub issues](https://github.com/asteris-llc/converge/issues)