Skip to content

Commit 8ab63c2

Browse files
committed
[clc] add packages to server at create
1 parent c93bc5c commit 8ab63c2

3 files changed

Lines changed: 56 additions & 0 deletions

File tree

builtin/providers/clc/provider.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,3 +203,26 @@ func parseAdditionalDisks(d *schema.ResourceData) ([]server.Disk, error) {
203203
}
204204
return disks, nil
205205
}
206+
207+
func parsePackages(d *schema.ResourceData) ([]server.Package, error) {
208+
var pkgs []server.Package
209+
if e := d.Get("packages"); e != nil {
210+
for _, e := range e.([]interface{}) {
211+
m := e.(map[string]interface{})
212+
id := m["id"].(string)
213+
delete(m, "id")
214+
ms := make(map[string]string)
215+
for k, v := range m {
216+
if s, ok := v.(string); ok {
217+
ms[k] = s
218+
}
219+
}
220+
p := server.Package{
221+
ID: id,
222+
Params: ms,
223+
}
224+
pkgs = append(pkgs, p)
225+
}
226+
}
227+
return pkgs, nil
228+
}

builtin/providers/clc/resource_clc_server.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ func resourceCLCServer() *schema.Resource {
6969
Optional: true,
7070
Elem: &schema.Schema{Type: schema.TypeMap},
7171
},
72+
"packages": &schema.Schema{
73+
Type: schema.TypeList,
74+
Optional: true,
75+
Elem: &schema.Schema{Type: schema.TypeMap},
76+
},
7277

7378
// optional: misc state storage. non-CLC field
7479
"metadata": &schema.Schema{
@@ -149,6 +154,12 @@ func resourceCLCServerCreate(d *schema.ResourceData, meta interface{}) error {
149154
}
150155
spec.Customfields = fields
151156

157+
pkgs, err := parsePackages(d)
158+
if err != nil {
159+
return fmt.Errorf("Failed setting packages: %v", err)
160+
}
161+
spec.Packages = pkgs
162+
152163
resp, err := client.Server.Create(spec)
153164
if err != nil || !resp.IsQueued {
154165
return fmt.Errorf("Failed creating server: %v", err)

website/source/docs/providers/clc/r/server.html.markdown

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,25 @@ up in advance. Each `custom_fields` block supports the following:
105105
* `id` - (Required, string) The ID of the custom field to set.
106106
* `value` - (Required, string) The value for the specified field.
107107

108+
<a id="packages"></a>
109+
## Packages
110+
111+
`packages` is a block within the configuration that may be repeated to
112+
specify packages and their associated parameters to be run at
113+
instantiation. Packages facilitate various tasks like ssh key
114+
installation, kernel upgrades, etc. Package ID as well as parameters
115+
are configured via this block.
116+
117+
Example:
118+
119+
```
120+
# Configure the CLC Provider
121+
provider "clc_server" "ubuntu" {
122+
...
123+
packages
124+
{
125+
id = "77abb844-579d-478d-3955-c69ab4a7ba1a"
126+
SshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAA..."
127+
}
128+
}
129+
```

0 commit comments

Comments
 (0)