PSTerraformParser-Classes.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class attributevalue {
    [attributetype] $type
    [string] $value

    attributevalue([string]$data) {
        if ($data -eq "<computed>") {
            $this.type = [attributetype]::computed
        } elseif ($data -like '"*') {
            $this.type = [attributetype]::string
            $this.value = $data.trim('"')
        } else {
            $this.type = [attributetype]::unknown
            $this.value = $data
        }
    }
}

enum attributetype {
    unknown
    string
    computed
}
class change {
    [string] $module
    [action] $action
    [string] $type
    [string] $name
    [string] $path
    [hashtable] $changedAttributes
    [bool] $newResourceRequired
    [bool] $tainted
}

enum action {
    create
    destroy
    replace
    update
    read
}

class changedattribute {
    [attributevalue] $old
    [attributevalue] $new
    [bool] $forcesNewResource
}
class error {
    [string] $code
    [string] $message
}

class terraformplan {
    [error[]] $errors
    [change[]] $changedResources
    [change[]] $changedDataSources
}