Skip to content
This repository was archived by the owner on Mar 1, 2023. It is now read-only.

Commit 2c973d0

Browse files
authored
Feature/storage (#31)
storage resource added
1 parent e9155be commit 2c973d0

16 files changed

+1067
-27
lines changed

GNUmakefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ vet:
3434
exit 1; \
3535
fi
3636

37+
doc-generate:
38+
go install -mod=mod github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
39+
tfplugindocs
40+
3741
fmt:
3842
gofmt -w $(GOFMT_FILES)
3943

docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,5 +248,6 @@ resource "gcore_lbmember" "lbm2" {
248248
- **gcore_cdn_api** (String) CDN API
249249
- **gcore_client_id** (String) Client id
250250
- **gcore_platform** (String) Platform ulr is used for generate jwt
251+
- **gcore_storage_api** (String) Storage API
251252
- **password** (String)
252253
- **user_name** (String)

docs/resources/gcore_storage.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "gcore_storage Resource - terraform-provider-gcorelabs"
4+
subcategory: ""
5+
description: |-
6+
Represent storage resource.
7+
---
8+
9+
# gcore_storage (Resource)
10+
11+
Represent storage resource.
12+
13+
## Example Usage
14+
15+
```terraform
16+
provider gcore {
17+
user_name = "test"
18+
password = "test"
19+
gcore_platform = "https://api.gcdn.co"
20+
gcore_storage_api = "https://storage.gcorelabs.com/api"
21+
}
22+
23+
resource "gcore_storage" "tf_example_s3" {
24+
name = "tf_example"
25+
location = "s-ed1"
26+
type = "s3"
27+
link_key_id = 199
28+
}
29+
```
30+
31+
<!-- schema generated by tfplugindocs -->
32+
## Schema
33+
34+
### Required
35+
36+
- **location** (String) A location of new storage resource. One of (s-ed1, s-darz1, s-ws1, ams, sin, fra, mia)
37+
- **name** (String) A name of new storage resource.
38+
- **type** (String) A type of new storage resource. One of (sftp, s3)
39+
40+
### Optional
41+
42+
- **client_id** (Number) An client id of new storage resource.
43+
- **expires** (String) A expires date of storage resource.
44+
- **generate_sftp_password** (Boolean) An auto generated sftp password for new storage resource.
45+
- **id** (String) The ID of this resource.
46+
- **link_key_id** (Number) An key id to link with new storage resource.
47+
- **server_alias** (String) An alias of storage resource.
48+
- **sftp_password** (String) A sftp password for new storage resource.
49+
- **storage_id** (Number) An id of new storage resource.
50+
51+
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "gcore_storage_key Resource - terraform-provider-gcorelabs"
4+
subcategory: ""
5+
description: |-
6+
Represent storage key resource.
7+
---
8+
9+
# gcore_storage_key (Resource)
10+
11+
Represent storage key resource.
12+
13+
## Example Usage
14+
15+
```terraform
16+
provider gcore {
17+
user_name = "test"
18+
password = "test"
19+
gcore_platform = "https://api.gcdn.co"
20+
gcore_storage_api = "https://storage.gcorelabs.com/api"
21+
}
22+
23+
resource "gcore_storage_key" "terraform_test_key" {
24+
name = "terraform_test_key"
25+
key = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q== [email protected]"
26+
}
27+
```
28+
29+
<!-- schema generated by tfplugindocs -->
30+
## Schema
31+
32+
### Required
33+
34+
- **key** (String) A body of of new storage key resource.
35+
- **name** (String) A name of new storage key resource.
36+
37+
### Optional
38+
39+
- **id** (String) The ID of this resource.
40+
- **key_id** (Number) An id of of new storage key resource.
41+
42+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
provider gcore {
2+
user_name = "test"
3+
password = "test"
4+
gcore_platform = "https://api.gcdn.co"
5+
gcore_storage_api = "https://storage.gcorelabs.com/api"
6+
}
7+
8+
resource "gcore_storage" "tf_example_s3" {
9+
name = "tf_example"
10+
location = "s-ed1"
11+
type = "s3"
12+
link_key_id = 199
13+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
provider gcore {
2+
user_name = "test"
3+
password = "test"
4+
gcore_platform = "https://api.gcdn.co"
5+
gcore_storage_api = "https://storage.gcorelabs.com/api"
6+
}
7+
8+
resource "gcore_storage_key" "terraform_test_key" {
9+
name = "terraform_test_key"
10+
key = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q== [email protected]"
11+
}

gcore/provider.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package gcore
22

33
import (
44
"context"
5+
"fmt"
56
"net/http"
67

8+
storageSDK "github.com/G-Core/gcorelabs-storage-sdk-go"
79
gcdn "github.com/G-Core/gcorelabscdn-go"
810
gcdnProvider "github.com/G-Core/gcorelabscdn-go/gcore/provider"
911
gcorecloud "github.com/G-Core/gcorelabscloud-go"
@@ -43,6 +45,12 @@ func Provider() *schema.Provider {
4345
Description: "CDN API",
4446
DefaultFunc: schema.EnvDefaultFunc("GCORE_CDN_API", ""),
4547
},
48+
"gcore_storage_api": &schema.Schema{
49+
Type: schema.TypeString,
50+
Optional: true,
51+
Description: "Storage API",
52+
DefaultFunc: schema.EnvDefaultFunc("GCORE_STORAGE_API", ""),
53+
},
4654
"gcore_client_id": &schema.Schema{
4755
Type: schema.TypeString,
4856
Optional: true,
@@ -67,6 +75,8 @@ func Provider() *schema.Provider {
6775
"gcore_baremetal": resourceBmInstance(),
6876
"gcore_snapshot": resourceSnapshot(),
6977
"gcore_servergroup": resourceServerGroup(),
78+
"gcore_storage": resourceStorage(),
79+
"gcore_storage_key": resourceStorageKey(),
7080
"gcore_cdn_resource": resourceCDNResource(),
7181
"gcore_cdn_origingroup": resourceCDNOriginGroup(),
7282
"gcore_cdn_rule": resourceCDNRule(),
@@ -98,6 +108,7 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}
98108
password := d.Get("password").(string)
99109
api := d.Get("gcore_api").(string)
100110
cdnAPI := d.Get("gcore_cdn_api").(string)
111+
storageAPI := d.Get("gcore_storage_api").(string)
101112
platform := d.Get("gcore_platform").(string)
102113
clientID := d.Get("gcore_client_id").(string)
103114

@@ -121,9 +132,15 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}
121132
}))
122133
cdnService := gcdn.NewService(cdnProvider)
123134

135+
stHost, stPath, err := ExtractHosAndPath(storageAPI)
136+
if err != nil {
137+
return nil, diag.FromErr(fmt.Errorf("storage api url: %w", err))
138+
}
139+
124140
config := Config{
125-
Provider: provider,
126-
CDNClient: cdnService,
141+
Provider: provider,
142+
CDNClient: cdnService,
143+
StorageClient: storageSDK.NewSDK(stHost, stPath, storageSDK.WithBearerAuth(provider.AccessToken)),
127144
}
128145

129146
return &config, diags

gcore/provider_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const (
2424
GCORE_USERNAME_VAR VarName = "GCORE_USERNAME"
2525
GCORE_PASSWORD_VAR VarName = "GCORE_PASSWORD"
2626
GCORE_CDN_URL_VAR VarName = "GCORE_CDN_URL"
27+
GCORE_STORAGE_URL_VAR VarName = "GCORE_STORAGE_API"
2728
GCORE_IMAGE_VAR VarName = "GCORE_IMAGE"
2829
GCORE_SECGROUP_VAR VarName = "GCORE_SECGROUP"
2930
GCORE_EXT_NET_VAR VarName = "GCORE_EXT_NET"
@@ -56,6 +57,7 @@ var (
5657
GCORE_VOLUME_ID = getEnv(GCORE_VOLUME_ID_VAR)
5758
GCORE_CDN_ORIGINGROUP_ID = getEnv(GCORE_CDN_ORIGINGROUP_ID_VAR)
5859
GCORE_CDN_RESOURCE_ID = getEnv(GCORE_CDN_RESOURCE_ID_VAR)
60+
GCORE_STORAGE_API = getEnv(GCORE_STORAGE_URL_VAR)
5961
)
6062

6163
var varsMap = map[VarName]string{
@@ -73,6 +75,7 @@ var varsMap = map[VarName]string{
7375
GCORE_VOLUME_ID_VAR: GCORE_VOLUME_ID,
7476
GCORE_CDN_ORIGINGROUP_ID_VAR: GCORE_CDN_ORIGINGROUP_ID,
7577
GCORE_CDN_RESOURCE_ID_VAR: GCORE_CDN_RESOURCE_ID,
78+
GCORE_STORAGE_URL_VAR: GCORE_STORAGE_API,
7679
}
7780

7881
func testAccPreCheckVars(t *testing.T, vars ...VarName) {

0 commit comments

Comments
 (0)