Skip to content

Commit f9f1bef

Browse files
[FGS]: dependency version (#660)
1 parent df17d32 commit f9f1bef

File tree

6 files changed

+223
-0
lines changed

6 files changed

+223
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package v2
2+
3+
import (
4+
"strings"
5+
"testing"
6+
7+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
8+
"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
9+
"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
10+
"github.com/opentelekomcloud/gophertelekomcloud/openstack/fgs/v2/dependency_version"
11+
"github.com/opentelekomcloud/gophertelekomcloud/openstack/fgs/v2/function"
12+
th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
13+
)
14+
15+
func TestDependencyVersionLifecycle(t *testing.T) {
16+
client, err := clients.NewFuncGraphClient()
17+
th.AssertNoErr(t, err)
18+
19+
createResp, _ := createFunctionGraph(t, client)
20+
21+
funcUrn := strings.TrimSuffix(createResp.FuncURN, ":latest")
22+
23+
defer func(client *golangsdk.ServiceClient, id string) {
24+
err = function.Delete(client, id)
25+
th.AssertNoErr(t, err)
26+
}(client, funcUrn)
27+
28+
createOpts := dependency_version.CreateOpts{
29+
Name: tools.RandomString("dep-version-", 4),
30+
Runtime: "Python3.9",
31+
DependType: "obs",
32+
DependLink: "https://regr-func-graph.obs.eu-de.otc.t-systems.com/requirements.zip",
33+
Description: "test dependency",
34+
}
35+
36+
createDepResp, err := dependency_version.Create(client, createOpts)
37+
th.AssertNoErr(t, err)
38+
39+
defer func(client *golangsdk.ServiceClient, id string) {
40+
err = dependency_version.Delete(client, createDepResp.DepId, "1")
41+
th.AssertNoErr(t, err)
42+
}(client, funcUrn)
43+
44+
getDepResp, err := dependency_version.Get(client, createDepResp.DepId, "1")
45+
th.AssertNoErr(t, err)
46+
th.AssertEquals(t, createDepResp.Name, getDepResp.Name)
47+
th.AssertEquals(t, createDepResp.Runtime, getDepResp.Runtime)
48+
th.AssertEquals(t, createDepResp.Etag, getDepResp.Etag)
49+
50+
listDepResp, err := dependency_version.ListDependencies(client, dependency_version.ListDependenciesOpts{
51+
DependencyType: "obs",
52+
Runtime: "Python3.9",
53+
})
54+
th.AssertNoErr(t, err)
55+
th.AssertEquals(t, len(listDepResp.Dependencies) > 1, true)
56+
57+
listDepVerResp, err := dependency_version.ListDependencyVersions(client, dependency_version.ListDependencyVersionOpts{
58+
DependId: createDepResp.DepId,
59+
})
60+
th.AssertNoErr(t, err)
61+
th.AssertEquals(t, listDepVerResp.Dependencies[0].Name, getDepResp.Name)
62+
th.AssertEquals(t, listDepVerResp.Dependencies[0].Runtime, getDepResp.Runtime)
63+
th.AssertEquals(t, listDepVerResp.Dependencies[0].Etag, getDepResp.Etag)
64+
65+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package dependency_version
2+
3+
import (
4+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
5+
"github.com/opentelekomcloud/gophertelekomcloud/internal/build"
6+
"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
7+
)
8+
9+
type CreateOpts struct {
10+
DependFile string `json:"depend_file,omitempty"`
11+
DependLink string `json:"depend_link,omitempty"`
12+
DependType string `json:"depend_type" required:"true"`
13+
Runtime string `json:"runtime" required:"true"`
14+
Name string `json:"name" required:"true"`
15+
Description string `json:"description,omitempty"`
16+
}
17+
18+
func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*DepVersionResp, error) {
19+
b, err := build.RequestBody(opts, "")
20+
if err != nil {
21+
return nil, err
22+
}
23+
24+
raw, err := client.Post(client.ServiceURL("fgs", "dependencies", "version"), b, nil, &golangsdk.RequestOpts{
25+
OkCodes: []int{200},
26+
})
27+
if err != nil {
28+
return nil, err
29+
}
30+
31+
var res DepVersionResp
32+
return &res, extract.Into(raw.Body, &res)
33+
}
34+
35+
type DepVersionResp struct {
36+
Id string `json:"id"`
37+
Owner string `json:"owner"`
38+
Link string `json:"link"`
39+
Runtime string `json:"runtime"`
40+
Etag string `json:"etag"`
41+
Size int `json:"size"`
42+
Name string `json:"name"`
43+
Description string `json:"description"`
44+
FileName string `json:"file_name"`
45+
Version int `json:"version"`
46+
DepId string `json:"dep_id"`
47+
LastModified int `json:"last_modified"`
48+
DownloadLink string `json:"download_link"`
49+
IsShared bool `json:"is_shared"`
50+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package dependency_version
2+
3+
import golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
4+
5+
func Delete(client *golangsdk.ServiceClient, dependId, version string) (err error) {
6+
_, err = client.Delete(client.ServiceURL("fgs", "dependencies", dependId, "version", version), nil)
7+
return
8+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package dependency_version
2+
3+
import (
4+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
5+
"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
6+
)
7+
8+
func Get(client *golangsdk.ServiceClient, dependId, version string) (*DepVersionResp, error) {
9+
raw, err := client.Get(client.ServiceURL("fgs", "dependencies", dependId, "version", version), nil, nil)
10+
if err != nil {
11+
return nil, err
12+
}
13+
14+
var res DepVersionResp
15+
err = extract.Into(raw.Body, &res)
16+
return &res, err
17+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package dependency_version
2+
3+
import (
4+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
5+
"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
6+
)
7+
8+
type ListDependencyVersionOpts struct {
9+
DependId string `json:"-"`
10+
Marker string `q:"marker"`
11+
MaxItems string `q:"max_items"`
12+
}
13+
14+
func ListDependencyVersions(client *golangsdk.ServiceClient, opts ListDependencyVersionOpts) (*ListDepVersionResp, error) {
15+
url, err := golangsdk.NewURLBuilder().WithEndpoints("fgs", "dependencies", opts.DependId, "version").WithQueryParams(&opts).Build()
16+
if err != nil {
17+
return nil, err
18+
}
19+
20+
raw, err := client.Get(client.ServiceURL(url.String()), nil, nil)
21+
if err != nil {
22+
return nil, err
23+
}
24+
25+
var res ListDepVersionResp
26+
err = extract.Into(raw.Body, &res)
27+
return &res, err
28+
}
29+
30+
type ListDepVersionResp struct {
31+
Dependencies []DepVersionListResp `json:"dependencies"`
32+
NextMarker int `json:"next_marker"`
33+
Count int `json:"count"`
34+
}
35+
36+
type DepVersionListResp struct {
37+
Id string `json:"id"`
38+
Owner string `json:"owner"`
39+
Link string `json:"link"`
40+
Runtime string `json:"runtime"`
41+
Etag string `json:"etag"`
42+
Size int `json:"size"`
43+
Name string `json:"name"`
44+
Description string `json:"description"`
45+
FileName string `json:"file_name"`
46+
Version int `json:"version"`
47+
DepId string `json:"dep_id"`
48+
LastModified string `json:"last_modified"`
49+
DownloadLink string `json:"download_link"`
50+
IsShared bool `json:"is_shared"`
51+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package dependency_version
2+
3+
import (
4+
golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
5+
"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
6+
)
7+
8+
type ListDependenciesOpts struct {
9+
Marker string `q:"marker"`
10+
MaxItems string `q:"max_items"`
11+
IsPublic string `json:"is_public"`
12+
DependencyType string `json:"dependency_type"`
13+
Runtime string `json:"runtime"`
14+
Name string `json:"name"`
15+
Limit string `json:"limit"`
16+
}
17+
18+
func ListDependencies(client *golangsdk.ServiceClient, opts ListDependenciesOpts) (*ListDepVersionResp, error) {
19+
url, err := golangsdk.NewURLBuilder().WithEndpoints("fgs", "dependencies").WithQueryParams(&opts).Build()
20+
if err != nil {
21+
return nil, err
22+
}
23+
24+
raw, err := client.Get(client.ServiceURL(url.String()), nil, nil)
25+
if err != nil {
26+
return nil, err
27+
}
28+
29+
var res ListDepVersionResp
30+
err = extract.Into(raw.Body, &res)
31+
return &res, err
32+
}

0 commit comments

Comments
 (0)