From 29930cd612eb2da9d210b818d2c3bc2b3ed7a7f1 Mon Sep 17 00:00:00 2001 From: DenBeke Date: Tue, 14 May 2019 18:31:01 +0200 Subject: [PATCH] feat: marketplace - add FindLocalImageIDByName (#27) --- api/marketplace/v1/marketplace_utils.go | 81 + api/marketplace/v1/marketplace_utils_test.go | 55 + api/marketplace/v1/testdata/go-vcr.yaml | 1679 +++++++++++++++++ go.mod | 5 +- go.sum | 3 + utils/locality.go | 116 +- utils/locality_test.go | 92 + vendor/github.com/dnaeon/go-vcr/LICENSE | 24 + .../dnaeon/go-vcr/cassette/cassette.go | 227 +++ .../dnaeon/go-vcr/recorder/go17_nobody.go | 37 + .../dnaeon/go-vcr/recorder/go18_nobody.go | 36 + .../dnaeon/go-vcr/recorder/recorder.go | 275 +++ vendor/modules.txt | 3 + 13 files changed, 2630 insertions(+), 3 deletions(-) create mode 100644 api/marketplace/v1/marketplace_utils.go create mode 100644 api/marketplace/v1/marketplace_utils_test.go create mode 100644 api/marketplace/v1/testdata/go-vcr.yaml create mode 100644 utils/locality_test.go create mode 100644 vendor/github.com/dnaeon/go-vcr/LICENSE create mode 100644 vendor/github.com/dnaeon/go-vcr/cassette/cassette.go create mode 100644 vendor/github.com/dnaeon/go-vcr/recorder/go17_nobody.go create mode 100644 vendor/github.com/dnaeon/go-vcr/recorder/go18_nobody.go create mode 100644 vendor/github.com/dnaeon/go-vcr/recorder/recorder.go diff --git a/api/marketplace/v1/marketplace_utils.go b/api/marketplace/v1/marketplace_utils.go new file mode 100644 index 00000000..71a96196 --- /dev/null +++ b/api/marketplace/v1/marketplace_utils.go @@ -0,0 +1,81 @@ +package marketplace + +import ( + "fmt" + + "github.com/scaleway/scaleway-sdk-go/utils" +) + +// getLocalImage returns the correct local version of an image matching +// the current zone and the compatible commercial type +func (version *Version) getLocalImage(zone utils.Zone, commercialType string) (*LocalImage, error) { + + for _, localImage := range version.LocalImages { + + // Check if in correct zone + if localImage.Zone != zone { + continue + } + + // Check if compatible with wanted commercial type + for _, compatibleCommercialType := range localImage.CompatibleCommercialTypes { + if compatibleCommercialType == commercialType { + return localImage, nil + } + } + } + + return nil, fmt.Errorf("couldn't find compatible local image for this image version (%s)", version.Id) + +} + +// getLatestVersion returns the current/latests version on an image, +// or an error in case the image doesn't have a public version. +func (image *Image) getLatestVersion() (*Version, error) { + + for _, version := range image.Versions { + if version.Id == image.CurrentPublicVersion { + return version, nil + } + } + + return nil, fmt.Errorf("latest version could not be found for image %s", image.Name) +} + +// FindLocalImageIDByName search for an image with the given name (exact match) in the given region +// it returns the latest version of this specific image. +func (s *Api) FindLocalImageIDByName(imageName string, zone utils.Zone, commercialType string) (string, error) { + + listImageRequest := &ListImagesRequest{} + listImageResponse, err := s.ListImages(listImageRequest) + if err != nil { + return "", err + } + + // TODO: handle pagination + + images := listImageResponse.Images + _ = images + + for _, image := range images { + + // Match name of the image + if image.Name == imageName { + + latestVersion, err := image.getLatestVersion() + if err != nil { + return "", fmt.Errorf("couldn't find a matching image for the given name (%s), zone (%s) and commercial type (%s): %s", imageName, zone, commercialType, err) + } + + localImage, err := latestVersion.getLocalImage(zone, commercialType) + if err != nil { + return "", fmt.Errorf("couldn't find a matching image for the given name (%s), zone (%s) and commercial type (%s): %s", imageName, zone, commercialType, err) + } + + return localImage.Id, nil + } + + } + + return "", fmt.Errorf("couldn't find a matching image for the given name (%s), zone (%s) and commercial type (%s)", imageName, zone, commercialType) +} diff --git a/api/marketplace/v1/marketplace_utils_test.go b/api/marketplace/v1/marketplace_utils_test.go new file mode 100644 index 00000000..61109bb1 --- /dev/null +++ b/api/marketplace/v1/marketplace_utils_test.go @@ -0,0 +1,55 @@ +package marketplace + +import ( + "net/http" + "testing" + + "github.com/dnaeon/go-vcr/recorder" + "github.com/scaleway/scaleway-sdk-go/internal/testhelpers" + "github.com/scaleway/scaleway-sdk-go/scw" + "github.com/scaleway/scaleway-sdk-go/utils" +) + +func TestGetImageByName(t *testing.T) { + + // Setup recorder and scw client + r, err := recorder.NewAsMode("testdata/go-vcr", recorder.ModeReplaying, nil) + if err != nil { + testhelpers.Ok(t, err) + } + defer r.Stop() // Make sure recorder is stopped once done with it + + httpClient := &http.Client{Transport: r} + + client, err := scw.NewClient( + scw.WithoutAuth(), + scw.WithHTTPClient(httpClient), + ) + if err != nil { + testhelpers.Ok(t, err) + } + + t.Run("matching input for GetImageByName", func(t *testing.T) { + + // Create SDK objects for Scaleway Instance product + marketplaceAPI := NewApi(client) + + imageID, err := marketplaceAPI.FindLocalImageIDByName("Docker", utils.ZoneFrPar1, "C1") + testhelpers.Ok(t, err) + + // Docker C1 at par1: 45a7e942-1fb0-48c0-bbf6-0acb9af24604 + testhelpers.Equals(t, "45a7e942-1fb0-48c0-bbf6-0acb9af24604", imageID) + + }) + + t.Run("non-matching name for GetImageByName", func(t *testing.T) { + + // Create SDK objects for Scaleway Instance product + marketplaceAPI := NewApi(client) + + _, err := marketplaceAPI.FindLocalImageIDByName("foo-bar-image", "", "") + testhelpers.Assert(t, err != nil, "Should have error") + + }) + +} diff --git a/api/marketplace/v1/testdata/go-vcr.yaml b/api/marketplace/v1/testdata/go-vcr.yaml new file mode 100644 index 00000000..ad79e898 --- /dev/null +++ b/api/marketplace/v1/testdata/go-vcr.yaml @@ -0,0 +1,1679 @@ +--- +version: 1 +interactions: +- request: + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/0.0.0 + url: https://api.scaleway.com/marketplace/v1/images + method: GET + response: + body: '{"images": [{"valid_until": null, "description": "Etherpad is a highly + customizable Open Source online editor.", "creation_date": "2016-03-07T21:01:06.696775+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/etherpad.png", "id": + "53e87f7e-b173-4e88-b9ae-81c2ab7f168e", "categories": ["instantapp"], "name": + "Etherpad", "modification_date": "2019-03-26T14:00:49.232680+00:00", "versions": + [{"creation_date": "2016-03-07T21:54:43.305997+00:00", "modification_date": + "2016-03-07T21:54:43.305997+00:00", "id": "6fc832a1-6a31-4ac4-9dc5-27a9875e2a32", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f085beb3-b99c-493e-a882-87a2f6d48bf8", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "7cb6244a-7d24-4459-b5eb-ce0053c30633", "zone": "ams1"}], + "name": "2015-09-18"}], "current_public_version": "6fc832a1-6a31-4ac4-9dc5-27a9875e2a32", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Arch Linux is an independently developed + Linux distribution versatile enough to suit any role.", "creation_date": "2016-03-07T20:55:32.213089+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/archlinux.png", "id": + "8f60c5dd-e659-48da-97e3-fb7de42195f5", "categories": ["distribution"], "name": + "Arch Linux", "modification_date": "2019-03-26T14:00:49.327070+00:00", "versions": + [{"creation_date": "2018-04-20T15:59:04.594929+00:00", "modification_date": + "2018-04-20T15:59:04.594929+00:00", "id": "f7696517-bc49-448b-9869-f2c84e7c2a96", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "f21defd0-9fd9-4fb2-a29a-22844a6be3cd", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "3c904f73-080e-4c6f-8b28-8426cfdcb3c7", + "zone": "ams1"}], "name": "2018-04-20T15:59:04.593811"}], "current_public_version": + "f7696517-bc49-448b-9869-f2c84e7c2a96", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Java + is a computer programming language that is concurrent, class-based, object-oriented, + and specifically designed to have as few implementation dependencies as possible.", + "creation_date": "2016-03-07T21:07:46.908969+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/java.png", + "id": "d72d1b73-7460-446b-91fb-b451d079aa4d", "categories": ["instantapp"], + "name": "Java", "modification_date": "2019-03-26T14:00:49.430836+00:00", "versions": + [{"creation_date": "2018-04-18T10:11:18.535736+00:00", "modification_date": + "2018-04-18T10:11:18.535736+00:00", "id": "f3f69cca-aadb-4e5e-94b0-254ce05a6639", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "c50cb4b2-bf7b-47e2-ab5f-3a9d3d4c1aef", "zone": "ams1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "98c93894-26a8-463b-a72b-c9d2b531b95d", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "43c43b5e-1e4f-4905-baef-71df3c565b4d", "zone": "ams1"}, + {"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", + "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", + "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], + "arch": "x86_64", "id": "0c3f9f03-f490-444b-a05e-f342e917fed0", "zone": "par1"}, + {"compatible_commercial_types": ["C1"], "arch": "arm", "id": "5e07622b-ad8b-4f65-b55f-cca18c3c0bbf", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", + "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": + "arm64", "id": "c0330755-e5d0-4c2c-ad0e-70687e1dccbb", "zone": "par1"}], "name": + "2018-04-18T10:11:18.477156"}], "current_public_version": "f3f69cca-aadb-4e5e-94b0-254ce05a6639", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Docker is an open platform for developers + and sysadmins to build, ship, and run distributed applications.", "creation_date": + "2016-03-05T15:11:26.847640+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/docker.png", + "id": "c1b530d8-0ca0-45c4-80db-ba06608287b2", "categories": ["instantapp"], + "name": "Docker", "modification_date": "2019-03-26T14:00:49.524465+00:00", "versions": + [{"creation_date": "2019-03-07T17:07:39.090644+00:00", "modification_date": + "2019-03-07T17:07:39.090644+00:00", "id": "bf30c937-6e89-4019-ad2a-92156a62cf3e", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "89c80d27-ddf4-4ffa-8215-b335cce3fd05", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "99e2a9c6-f0b9-42b6-8823-8b0d86ffe9bf", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "45a7e942-1fb0-48c0-bbf6-0acb9af24604", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "c669011a-ee16-42b6-b0c3-ecd19e419539", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "dcf35840-c007-4c8b-a48b-227cfd8a347b", + "zone": "ams1"}], "name": "2019-03-07T17:07:39.004809"}], "current_public_version": + "bf30c937-6e89-4019-ad2a-92156a62cf3e", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "ELK + stack is an environment that lets you collect, store and visualize your logs.", + "creation_date": "2016-03-07T21:07:26.481966+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/elk.png", + "id": "d9bc56e5-0a20-41d8-b581-f54e636888c8", "categories": ["instantapp"], + "name": "ELK stack", "modification_date": "2019-03-26T14:00:49.621237+00:00", + "versions": [{"creation_date": "2016-03-22T10:45:53.277539+00:00", "modification_date": + "2016-03-22T10:45:53.277539+00:00", "id": "2ac56aca-3aa9-44b7-8145-2a47173819f3", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "bf234cb3-0e42-4642-8f9b-5c74121ebea4", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "23fefa88-e769-43e4-abd2-a2024366f529", "zone": "ams1"}], + "name": "2016-03-22"}], "current_public_version": "2ac56aca-3aa9-44b7-8145-2a47173819f3", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ubuntu is the ideal distribution for scale-out + computing, Ubuntu Server helps you make the most of your infrastructure.", "creation_date": + "2016-04-22T13:27:33.769932+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", + "id": "acf93867-88d9-40ee-99ea-6b2bb1ee8f0c", "categories": ["distribution"], + "name": "Ubuntu Xenial", "modification_date": "2019-03-26T14:00:49.712120+00:00", + "versions": [{"creation_date": "2018-09-05T21:16:05.803947+00:00", "modification_date": + "2018-09-05T21:16:05.803947+00:00", "id": "265b32a3-59a5-402f-9710-6040c4ef47d3", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f71f2ad9-7810-405b-9181-2e8d5e1feb18", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "4035ca92-5292-4c6e-aa17-759fbc32765e", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "b5a754d1-8262-47d2-acb2-22739295bb68", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "9feb1aec-492f-4144-a64f-bd67578a3b01", "zone": "ams1"}, + {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", + "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": "2c1a1716-5570-4668-a50a-860c90beabf6", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "ba6a7295-7980-49c1-bd3f-e3a1819b951f", "zone": "ams1"}], "name": + "2018-09-05T21:16:05.804627"}], "current_public_version": "265b32a3-59a5-402f-9710-6040c4ef47d3", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "GitLab is a web-based Git repository manager + with wiki and issue tracking features.", "creation_date": "2016-03-07T21:06:22.770864+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/gitlab.png", "id": "233074b9-e2ba-4e78-818e-dd4930ce6bee", + "categories": ["instantapp"], "name": "GitLab", "modification_date": "2019-04-09T13:31:04.022755+00:00", + "versions": [{"creation_date": "2019-04-09T13:31:03.648676+00:00", "modification_date": + "2019-04-09T13:31:03.648676+00:00", "id": "a389c94b-8b19-4528-a4f6-0b7cac3425e9", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "06a2a6e9-922d-4353-9472-bbb1f79fda63", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "4527e41c-0e90-43a8-857e-d9584bf8467f", "zone": "par1"}], "name": "2019-04-09T13:31:03.352588"}], + "current_public_version": "a389c94b-8b19-4528-a4f6-0b7cac3425e9", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Pydio is the mature, open-source software + solution for file sharing and synchronization with an intuitive user interfaces.", + "creation_date": "2016-03-07T21:05:29.425733+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/pydio.png", + "id": "ec8419f9-2146-467d-982b-eacbb32a4087", "categories": ["instantapp"], + "name": "Pydio", "modification_date": "2019-03-26T14:00:49.887331+00:00", "versions": + [{"creation_date": "2016-03-07T22:05:57.451042+00:00", "modification_date": + "2016-03-07T22:05:57.451042+00:00", "id": "e982e06a-927b-4373-a82c-770123aae518", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "8428b1d9-07ac-4a90-bf23-1ac34c73c3c0", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "a6d4aace-fb6a-48fe-9c4e-de8a91b55af2", "zone": "ams1"}], + "name": "2015-06-23"}], "current_public_version": "e982e06a-927b-4373-a82c-770123aae518", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Nextcloud is an open source, self-hosted + file share and communication platform.", "creation_date": "2019-04-16T12:22:56.930842+00:00", + "logo": "http://marketplace-logos.s3.nl-ams.scw.cloud/nextcloud.png", "id": + "7d4a7cb1-1fd5-4a64-920b-c79f47367254", "categories": ["instantapp"], "name": + "NextCloud", "modification_date": "2019-04-16T12:25:38.758921+00:00", "versions": + [{"creation_date": "2019-04-16T12:25:38.052537+00:00", "modification_date": + "2019-04-16T12:25:38.052537+00:00", "id": "2fe66cc6-8985-4b5f-8325-83acc0589436", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "e9af0a24-4312-4305-9386-b3a79e02f92d", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "c38073cf-ee40-4dc2-8059-ec2845f38f46", "zone": "ams1"}, + {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", + "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", + "VC1M"], "arch": "x86_64", "id": "b9e319f5-ac4c-400d-8ff6-a6a769755190", "zone": + "ams1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "0390c3e0-186d-4b24-8d0d-0e08b74fb59a", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "900971a4-3a3e-4ef9-b92f-b33c366c9f5c", "zone": + "par1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", + "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", + "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", + "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": "7b7d4dde-6fe1-4586-a5a5-ae1af2ca2605", + "zone": "par1"}], "name": "2019-04-16T12:25:37.374676"}], "current_public_version": + "2fe66cc6-8985-4b5f-8325-83acc0589436", "organization": {"id": "11111111-1111-4111-8111-111111111111", + "name": "OCS"}}, {"valid_until": null, "description": "PrestaShop is a free, + open source e-commerce solution.", "creation_date": "2016-03-07T21:01:47.997930+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/prestashop.png", "id": + "58a551e0-1b8b-4c83-82e7-1b4602ad43d1", "categories": ["instantapp"], "name": + "PrestaShop", "modification_date": "2019-03-26T14:00:50.067950+00:00", "versions": + [{"creation_date": "2018-05-16T14:57:16.059809+00:00", "modification_date": + "2018-05-16T14:57:16.059809+00:00", "id": "6c459ab1-4f1a-4f87-b92e-c00849c93fde", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "4d07fcfa-ccda-4945-81aa-8de2206b39c0", + "zone": "par1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "73db574d-d5a0-49d5-b6ca-dd662895fac3", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "c97dc20f-8066-4d56-aabf-2b75162c0f9f", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "c78c3206-eb2b-4217-ad7c-0aca98dec145", + "zone": "ams1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "7f91941c-f06a-4103-91a4-793f03b11fda", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "271a9c1f-73ef-4943-bac7-799130228040", "zone": "ams1"}], + "name": "2018-05-16T14:57:15.505378"}], "current_public_version": "6c459ab1-4f1a-4f87-b92e-c00849c93fde", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The intended audience of this InstantApp + is Python developers who want to bootstrap or test a Python application easily, + in seconds.", "creation_date": "2016-03-07T21:05:46.642023+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/python.png", + "id": "5c0f7971-c308-442e-82ab-2eb147439bd7", "categories": ["instantapp"], + "name": "Python", "modification_date": "2019-03-26T14:00:49.970905+00:00", "versions": + [{"creation_date": "2018-04-17T16:43:36.089412+00:00", "modification_date": + "2018-04-17T16:43:36.089412+00:00", "id": "2642a982-e61d-4a58-8105-8838a69a85e3", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "70b9c9cf-c2d9-4a80-b450-a7aef8226d96", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "5218fa4e-8239-4831-ac2a-c96e23f387a2", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f205e2a6-621a-4534-a5d1-36f6cf1f8376", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "613a5226-3d97-4f0e-abe2-99385a050784", "zone": "ams1"}], + "name": "2018-04-17T16:43:36.031203"}], "current_public_version": "2642a982-e61d-4a58-8105-8838a69a85e3", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Fedora is a powerful, flexible operating + system that includes the best and latest datacenter technologies. It puts you + in control of all your infrastructure and services.", "creation_date": "2018-05-03T09:51:57.274011+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", "id": "30d0f04f-6422-4b74-9ce9-1c2267419978", + "categories": ["distribution"], "name": "Fedora 28", "modification_date": "2019-03-26T14:00:50.156015+00:00", + "versions": [{"creation_date": "2018-05-03T12:01:10.147973+00:00", "modification_date": + "2018-05-03T12:01:10.147973+00:00", "id": "49e33199-28cc-44d6-bb2e-a6147944ad5c", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "830aad94-24e5-4363-b2c3-e62921bd9294", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "c9cd1782-2159-44b8-83b1-9c48ed6c8a63", + "zone": "par1"}], "name": "2018-05-03T12:01:10.135200"}], "current_public_version": + "49e33199-28cc-44d6-bb2e-a6147944ad5c", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "WordPress + is the most popular web software you can use to create a beautiful website or + blog.", "creation_date": "2016-03-07T21:03:59.783534+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/wordpress.png", + "id": "215a50f9-0ba8-4e9c-a4e7-10caf50e3586", "categories": ["instantapp"], + "name": "WordPress", "modification_date": "2019-03-26T14:00:50.250657+00:00", + "versions": [{"creation_date": "2019-03-08T08:58:28.971149+00:00", "modification_date": + "2019-03-08T08:58:28.971149+00:00", "id": "3fb22e1f-de7f-4787-9bf8-32770151a45e", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "8523fb41-500a-4f21-998b-890908da6119", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "5645133b-67a3-4644-9941-16f7e2b428ea", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "757fac76-5265-46f8-8a1f-00c0fb270010", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "7a892c1a-bbdc-491f-9974-4008e3708664", "zone": "ams1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "726334eb-0733-4b6a-becd-769ff9bfe16d", + "zone": "ams1"}], "name": "2019-03-08T08:58:28.893091"}], "current_public_version": + "3fb22e1f-de7f-4787-9bf8-32770151a45e", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Ubuntu + Bionic for Machine Learning 9.2", "creation_date": "2019-03-06T17:24:29.909001+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", "id": "7e48e55a-7b46-4e4f-b2d2-6b7316cdca8c", + "categories": ["Machine Learning"], "name": "Ubuntu Bionic ML 9.2", "modification_date": + "2019-03-26T14:00:50.353326+00:00", "versions": [{"creation_date": "2019-03-06T18:05:49.119145+00:00", + "modification_date": "2019-03-06T18:05:49.119145+00:00", "id": "905865bf-e34c-46b0-b7e2-5e11922e6511", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "6bd566a1-c5b6-4c59-be37-752e1491ce1f", + "zone": "par1"}], "name": "2019-03-06T18:05:49.043867"}], "current_public_version": + "905865bf-e34c-46b0-b7e2-5e11922e6511", "organization": {"id": "11111111-1111-4111-8111-111111111111", + "name": "OCS"}}, {"valid_until": null, "description": "Debian is a free, powerful + and stable operating system.", "creation_date": "2016-03-05T14:52:36.322319+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/debian.png", "id": "fb619bdf-834e-4c71-b7b8-15b5546d18bd", + "categories": ["distribution"], "name": "Debian Jessie", "modification_date": + "2019-03-26T14:00:50.449502+00:00", "versions": [{"creation_date": "2018-04-10T22:31:04.322822+00:00", + "modification_date": "2018-04-10T22:31:04.322822+00:00", "id": "d3846a7b-8219-4938-ad96-cc2173e22481", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "2dfad6d2-e527-4e93-8eb1-8dc57803b310", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "610f68d5-cbad-4923-98ae-782af8f3b527", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "dc22e553-2d2e-4689-94f8-8817db824202", "zone": "ams1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "2e570f53-199e-47cc-95dd-f7bc392496e3", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "abf9e3a2-7171-4764-91ef-57f30b21193d", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "69cbdd54-88a1-4458-b75e-662a0848a7ce", "zone": "ams1"}], + "name": "2018-04-10T22:31:04.321157"}], "current_public_version": "d3846a7b-8219-4938-ad96-cc2173e22481", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Alpine Linux is security-oriented, lightweight + Linux distribution based on musl libc and busybox.", "creation_date": "2016-03-05T14:49:50.255568+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/alpinelinux.png", "id": + "c0649a2a-e6bf-4712-9303-8d967153209c", "categories": ["distribution"], "name": + "Alpine Linux", "modification_date": "2019-03-26T14:00:54.425917+00:00", "versions": + [{"creation_date": "2018-04-26T10:18:10.201002+00:00", "modification_date": + "2018-04-26T10:18:10.201002+00:00", "id": "be2293b6-9eba-4497-9659-2cfb927483b5", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "24141068-1043-4885-bf2b-8290f617e273", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "241b0bb3-9eed-4a7b-b0fd-71c45452ac95", + "zone": "ams1"}], "name": "2018-04-26T10:18:10.196011"}], "current_public_version": + "be2293b6-9eba-4497-9659-2cfb927483b5", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "A + painless self-hosted Git service.", "creation_date": "2016-03-07T21:00:44.946716+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/gogs.png", "id": "90d512b8-e4b7-4821-98e9-78241d73a7e6", + "categories": ["instantapp"], "name": "Gogs", "modification_date": "2019-03-26T14:00:54.513196+00:00", + "versions": [{"creation_date": "2018-05-16T15:11:25.881343+00:00", "modification_date": + "2018-05-16T15:11:25.881343+00:00", "id": "1b9e22e3-6a29-4f42-acfd-281ad086ee1d", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "776705c4-be8e-4a27-b740-2e8bbba518c5", + "zone": "par1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "a513a250-e6e9-4687-892e-9d10b29e3972", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "d1341ece-ffda-4386-ad3a-27d60b650401", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "69b8bc0e-7771-42af-a4ad-ca756c31a18a", "zone": "ams1"}], + "name": "2018-05-16T15:11:25.303762"}], "current_public_version": "1b9e22e3-6a29-4f42-acfd-281ad086ee1d", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Kanboard is a project management software + that use the Kanban methodology.", "creation_date": "2016-03-07T21:03:25.999254+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/kanboard.png", "id": + "80e57489-db83-47d2-98fb-2acd0cfe99cc", "categories": ["instantapp"], "name": + "Kanboard", "modification_date": "2019-03-26T14:00:50.554737+00:00", "versions": + [{"creation_date": "2016-03-07T22:04:31.512162+00:00", "modification_date": + "2016-03-07T22:04:31.512162+00:00", "id": "db6dbf80-c69f-47c7-b077-8044ea756770", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "8ed594e6-9b91-4371-8273-244764ea63f7", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "22cdcb16-fb59-4b27-a234-b20408cfc340", "zone": "ams1"}], + "name": "2015-08-31"}], "current_public_version": "db6dbf80-c69f-47c7-b077-8044ea756770", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "A powerful and flexible web hosting control + panel.", "creation_date": "2016-03-07T21:00:27.542536+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/webmin.png", + "id": "f300f8c1-1e1d-42d6-8a4b-9e661eb5477d", "categories": ["instantapp"], + "name": "Webmin", "modification_date": "2019-03-26T14:00:50.646395+00:00", "versions": + [{"creation_date": "2016-11-30T11:02:00.852921+00:00", "modification_date": + "2016-11-30T11:02:00.852921+00:00", "id": "0faf919a-4ad4-4db4-9191-6ec9972e75d1", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "b4173ca3-a7f5-4dbe-bc07-3ee038df065c", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "0eb66d90-fd78-4de2-810b-21bb79060abd", "zone": "ams1"}], + "name": "2016-11-30"}], "current_public_version": "0faf919a-4ad4-4db4-9191-6ec9972e75d1", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The CentOS Project is a community-driven + free software effort focused on delivering a robust open source ecosystem.", + "creation_date": "2019-03-06T11:27:48.406290+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/centos.png", + "id": "1d47b370-ac63-43b1-9f34-7328675e5e18", "categories": ["distribution"], + "name": "CentOS 7.6", "modification_date": "2019-03-26T14:00:50.839069+00:00", + "versions": [{"creation_date": "2019-03-18T09:29:00.247544+00:00", "modification_date": + "2019-03-18T09:29:00.247544+00:00", "id": "53138072-3099-4566-8b18-de7b2739696a", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "05794ee5-c6d2-4d69-86dd-f1fc9032921d", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "0f44b130-2bc7-4f82-993e-de9d1042c56e", "zone": "par1"}], "name": "2019-03-18T09:29:00.168590"}], + "current_public_version": "53138072-3099-4566-8b18-de7b2739696a", "organization": + {"id": "11111111-1111-4111-8111-111111111111", "name": "OCS"}}, {"valid_until": + null, "description": "Jenkins provides continuous integration services for software + development.", "creation_date": "2016-03-08T07:17:47.815384+00:00", "logo": + "https://marketplace-logos.s3.nl-ams.scw.cloud/jenkins.png", "id": "160a0283-bddc-4359-b2fd-2390a00926f1", + "categories": ["instantapp"], "name": "Jenkins Slave", "modification_date": + "2019-03-26T14:00:50.924729+00:00", "versions": [{"creation_date": "2016-03-08T07:20:29.842334+00:00", + "modification_date": "2016-03-08T07:20:29.842334+00:00", "id": "181e1ed0-69b6-41f7-8212-16027f12234d", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "5730f693-edc6-4008-9ac0-3aef9a6f9d85", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "ff393ce9-4f72-4d1b-8212-a1c1ef78e574", "zone": "ams1"}], + "name": "2015-06-24"}], "current_public_version": "181e1ed0-69b6-41f7-8212-16027f12234d", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Discourse is an open source Internet forum + software application.", "creation_date": "2016-03-07T21:08:17.200172+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/discourse.png", "id": + "19a71b27-1825-4ac6-891a-50d78a096374", "categories": ["instantapp"], "name": + "Discourse", "modification_date": "2019-03-26T14:00:51.024987+00:00", "versions": + [{"creation_date": "2016-03-07T21:57:06.319711+00:00", "modification_date": + "2016-03-07T21:57:06.319711+00:00", "id": "07eeeb6c-a911-4e08-a3a5-e4ff75385dab", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "1d40502f-2068-4d8b-a4fc-446e8ec2883e", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "c2e98204-d533-4d4b-8433-e9a1b1be801f", "zone": "ams1"}], + "name": "2015-09-10"}], "current_public_version": "07eeeb6c-a911-4e08-a3a5-e4ff75385dab", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Node.js is an open source, cross-platform + runtime environment for server-side and networking applications.", "creation_date": + "2016-03-07T21:06:07.014951+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/nodejs.png", + "id": "d11d7cc2-6ec8-4f95-a286-24fb5bac9e39", "categories": ["instantapp"], + "name": "Node.js", "modification_date": "2019-03-26T14:00:51.148549+00:00", + "versions": [{"creation_date": "2018-04-18T10:07:15.744660+00:00", "modification_date": + "2018-04-18T10:07:15.744660+00:00", "id": "af308511-bcb3-4583-b0e0-79dbb1eea63e", + "local_images": [{"compatible_commercial_types": [], "arch": "arm", "id": "a8020f20-8a66-43f3-8253-35941db3d237", + "zone": "ams1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "3cc79cc6-4649-46d9-a2b6-698f1236e1d0", "zone": "ams1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "c9fb2bed-a9b8-4e1a-bf15-db8e763fe7a7", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "f01db1d0-092a-47de-a32e-09bd6bda7715", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "6f2e99e8-da99-4990-b689-7294e8a604fa", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "03980aee-14cd-44f1-be3c-508c8b8a19e6", "zone": "par1"}], "name": "2018-04-18T10:07:15.691016"}], + "current_public_version": "af308511-bcb3-4583-b0e0-79dbb1eea63e", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "An open source, in-memory data structure + store, used as database, cache and message broker.", "creation_date": "2016-03-07T20:59:43.537434+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/default.png", "id": "8e4ee9e3-ec32-4177-b2c3-97f44ad102d2", + "categories": ["instantapp"], "name": "Redis", "modification_date": "2019-03-26T14:00:51.245359+00:00", + "versions": [{"creation_date": "2016-03-07T21:47:04.576259+00:00", "modification_date": + "2016-03-07T21:47:04.576259+00:00", "id": "612174bf-c1aa-423f-9089-d15de44dafba", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "57abdeb5-6626-47e7-bfff-839c603f5c43", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "341413dd-e759-4575-93f7-f6ed18a3a9a7", "zone": "ams1"}], + "name": "2015-10-20"}], "current_public_version": "612174bf-c1aa-423f-9089-d15de44dafba", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The torrents InstantApp spawns a private + server to upload and download your digital files.", "creation_date": "2016-03-07T21:08:02.980958+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/seedbox.png", "id": "4e18f1fc-0b66-4692-a38d-bfa4c94f29de", + "categories": ["instantapp"], "name": "Torrents", "modification_date": "2019-03-26T14:00:51.427329+00:00", + "versions": [{"creation_date": "2019-03-25T13:04:02.099902+00:00", "modification_date": + "2019-03-25T13:04:02.099902+00:00", "id": "53d2e4fb-20df-4ba9-8d65-29256f2be480", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "41d0db97-4822-4642-96ec-6f3fbcfc167c", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "3fbe5f72-81da-4a0a-91ef-36ab68fc801e", "zone": "ams1"}, + {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", + "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", + "VC1M"], "arch": "x86_64", "id": "1aed7396-79dc-431d-af03-d3dde35d195f", "zone": + "ams1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "398875b6-de43-4946-976f-ba5189954912", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "a3160162-3d72-4632-8e42-4849a1280743", "zone": + "par1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", + "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", + "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", + "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": "f5d116e3-2b58-44cf-a83a-cd0682135473", + "zone": "par1"}], "name": "2019-03-25T13:04:01.408435"}], "current_public_version": + "53d2e4fb-20df-4ba9-8d65-29256f2be480", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Redmine + is a free and open source, web-based project management and issue tracking tool.", + "creation_date": "2016-03-07T21:02:29.445704+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/redmine.png", + "id": "6746cbf8-3732-4c23-ba15-34773652f058", "categories": ["instantapp"], + "name": "Redmine", "modification_date": "2019-03-26T14:00:51.662280+00:00", + "versions": [{"creation_date": "2016-03-22T10:48:06.775760+00:00", "modification_date": + "2016-03-22T10:48:06.775760+00:00", "id": "e0e29004-bfae-4663-a276-f2c9df70c698", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "a0df14e0-eb87-4f17-9c27-01c0106e13d3", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "d97ff062-7f89-4263-8f0c-cee31f1f25fd", "zone": "ams1"}], + "name": "2016-03-22"}], "current_public_version": "e0e29004-bfae-4663-a276-f2c9df70c698", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ubuntu is the ideal distribution for scale-out + computing, Ubuntu Server helps you make the most of your infrastructure.", "creation_date": + "2018-04-27T14:07:25.221998+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", + "id": "b381b2bf-804a-4b12-91f6-9f4ff273462f", "categories": ["distribution"], + "name": "Ubuntu Bionic", "modification_date": "2019-03-26T14:00:51.745705+00:00", + "versions": [{"creation_date": "2019-03-05T16:39:34.893732+00:00", "modification_date": + "2019-03-05T16:39:34.893732+00:00", "id": "e640c621-305b-45f5-975f-a3f80c1cec66", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "f974feac-abae-4365-b988-8ec7d1cec10d", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "f63fe42a-900f-4a5e-ba99-ab0e59469b7e", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "b4bdbee1-e1f1-4436-8de4-bdb1b6ba4803", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "9444d178-2285-4842-ac35-5e86eda8da91", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "a5076337-734f-4b99-95ed-9a5bc73b9b09", "zone": "ams1"}, + {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", + "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": "arm64", "id": "7663c62b-40e3-4e6b-a835-70723ec2050b", + "zone": "ams1"}], "name": "2019-03-05T16:39:34.377275"}], "current_public_version": + "e640c621-305b-45f5-975f-a3f80c1cec66", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Fedora + is a powerful, flexible operating system that includes the best and latest datacenter + technologies. It puts you in control of all your infrastructure and services.", + "creation_date": "2019-03-06T09:07:51.652433+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", + "id": "69adec15-f1a7-469a-9ba5-868577832521", "categories": ["distribution"], + "name": "Fedora 29", "modification_date": "2019-03-26T14:00:51.848785+00:00", + "versions": [{"creation_date": "2019-03-06T09:08:01.112958+00:00", "modification_date": + "2019-03-06T09:08:01.112958+00:00", "id": "a0f02365-f1af-48cb-b82d-75853a4e05e1", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "541f4562-5417-4b59-85d6-caaf64c1f127", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "3c0f706e-0947-47a3-88a3-595c29f7567a", "zone": "ams1"}], "name": "2019-03-06T09:08:01.016040"}], + "current_public_version": "a0f02365-f1af-48cb-b82d-75853a4e05e1", "organization": + {"id": "11111111-1111-4111-8111-111111111111", "name": "OCS"}}, {"valid_until": + null, "description": "self-hosted Slack-alternative", "creation_date": "2016-07-11T14:52:57.803007+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/mattermost.png", "id": + "98ad7ccb-cc7f-4828-9da3-113e9c1bd2db", "categories": ["instantapp"], "name": + "Mattermost", "modification_date": "2019-03-26T14:00:51.938920+00:00", "versions": + [{"creation_date": "2018-05-03T10:27:55.610920+00:00", "modification_date": + "2018-05-03T10:27:55.610920+00:00", "id": "42371bf7-c1ca-4889-a6d4-43febda865ca", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "486e128c-fde7-42d7-9200-5d91b8dc2761", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "eb2ed407-177c-4195-a4ca-f3baa85e62ed", + "zone": "ams1"}], "name": "2018-05-03T10:27:55.021511"}], "current_public_version": + "42371bf7-c1ca-4889-a6d4-43febda865ca", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Ubuntu + is the ideal distribution for scale-out computing, Ubuntu Server helps you make + the most of your infrastructure.", "creation_date": "2016-03-05T14:51:48.354036+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", "id": "c2292eda-bb2a-4399-a226-91f82525b75f", + "categories": ["distribution"], "name": "Ubuntu Trusty", "modification_date": + "2019-03-26T14:00:52.034055+00:00", "versions": [{"creation_date": "2017-01-05T13:56:38.476659+00:00", + "modification_date": "2017-01-05T13:56:38.476659+00:00", "id": "bf7f0487-213e-4d62-a423-fada39e06dcb", + "local_images": [{"compatible_commercial_types": [], "arch": "arm", "id": "e37df0e6-91e8-4adc-9944-318ad75c13ca", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "27ccbd68-090d-4f95-a342-db2c1c8f3628", "zone": "par1"}], "name": "2017-01-05"}], + "current_public_version": "bf7f0487-213e-4d62-a423-fada39e06dcb", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The CentOS Project is a community-driven + free software effort focused on delivering a robust open source ecosystem.", + "creation_date": "2017-06-22T13:15:23.907335+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/centos.png", + "id": "260b68bc-533c-4432-9a43-7178fc76ee02", "categories": ["distribution"], + "name": "CentOS 7.3", "modification_date": "2019-03-26T14:00:52.206561+00:00", + "versions": [{"creation_date": "2017-11-09T17:07:12.589821+00:00", "modification_date": + "2017-11-09T17:07:12.589821+00:00", "id": "1398b772-21d8-4450-bd7d-9b0441c59bdb", + "local_images": [{"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", + "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": + "arm64", "id": "4d43ed62-617e-480b-9318-4273c456c7f4", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "ddbc2580-8b92-4538-86a9-728243900919", + "zone": "ams1"}], "name": "2017-11-09T17:07:12.511348"}], "current_public_version": + "1398b772-21d8-4450-bd7d-9b0441c59bdb", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Debian + is a free, powerful and stable operating system.", "creation_date": "2017-06-26T15:37:13.460764+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/debian.png", "id": "c94b5df7-e698-4ac9-b273-565d18f5f8d2", + "categories": ["distribution"], "name": "Debian Stretch", "modification_date": + "2019-03-26T14:00:52.355447+00:00", "versions": [{"creation_date": "2019-03-05T17:19:56.355135+00:00", + "modification_date": "2019-03-05T17:19:56.355135+00:00", "id": "19ae7ee0-6164-4327-8c04-9bac122fa271", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "92ccf589-2d7f-4f1a-938c-8f3e8fdf0fb8", + "zone": "ams1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "2c62201d-19d4-4ea0-940d-dd13d9849783", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "9a53e825-19f9-4e1f-b841-dd921e4e1b39", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "1eddbd4c-3a60-45b3-b2f7-26ab7bd2ccd2", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "18f57fd2-51e9-4568-95f4-92ce03e6ef84", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "6e592c09-8f8d-4b66-8d78-dc72a767ac39", + "zone": "ams1"}], "name": "2019-03-05T17:19:55.857344"}], "current_public_version": + "19ae7ee0-6164-4327-8c04-9bac122fa271", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "ownCloud + lets you sync & share your files, calendar, contacts and more. Access your data + from all your devices, on an open platform you can extend and modify.", "creation_date": + "2016-03-07T21:05:14.365925+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/owncloud.png", + "id": "e22a5d54-ecb5-4fdd-a130-a473737ff7ab", "categories": ["instantapp"], + "name": "ownCloud", "modification_date": "2019-03-26T14:00:52.457272+00:00", + "versions": [{"creation_date": "2018-04-18T10:09:39.010195+00:00", "modification_date": + "2018-04-18T10:09:39.010195+00:00", "id": "c9c02a9c-e072-48af-aefd-bf6be9028022", + "local_images": [{"compatible_commercial_types": [], "arch": "arm", "id": "a5fb716a-1c60-4740-a179-98ce315ca3d7", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "2fdbbbb4-3b63-403b-9604-27713971efd6", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "4208a611-a789-40ea-ac0e-fb3001ee39a9", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "93de8eae-535f-47bd-88fa-84af7b5eaf76", "zone": "par1"}], "name": "2018-04-18T10:09:38.952503"}], + "current_public_version": "c9c02a9c-e072-48af-aefd-bf6be9028022", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "LEMP stack is a version where Apache has + been replaced with the more lightweight web server Nginx.", "creation_date": + "2016-03-07T21:06:53.552980+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/lemp.png", + "id": "986ba672-b489-4f66-9e3b-90194ac336d4", "categories": ["instantapp"], + "name": "LEMP stack", "modification_date": "2019-04-09T13:31:12.129567+00:00", + "versions": [{"creation_date": "2019-04-09T13:31:11.315416+00:00", "modification_date": + "2019-04-09T13:31:11.315416+00:00", "id": "a2e5ed1a-6f01-4f20-aabd-4115c67df590", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "32332006-1420-4260-97c7-c1da586f68cd", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "d16622f6-32c1-4d16-a3ca-38b23d3a25fb", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", + "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "1bd37d60-4494-485f-9a82-0a211005489c", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "415d3727-0013-419a-abc6-1a688b096730", "zone": "ams1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "26c3727a-5b77-4b26-89c9-445ea2006f07", + "zone": "par1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "155ab61a-e069-4acb-bae3-e8217c5c0376", + "zone": "ams1"}], "name": "2019-04-09T13:31:10.613803"}], "current_public_version": + "a2e5ed1a-6f01-4f20-aabd-4115c67df590", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Fedora + is a powerful, flexible operating system that includes the best and latest datacenter + technologies. It puts you in control of all your infrastructure and services.", + "creation_date": "2016-03-07T20:55:03.718181+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", + "id": "0e24ac4c-2fa7-4602-b790-02b74b698d86", "categories": ["distribution"], + "name": "Fedora", "modification_date": "2019-03-26T14:00:52.575424+00:00", "versions": + [{"creation_date": "2016-03-07T22:03:48.364794+00:00", "modification_date": + "2016-03-07T22:03:48.364794+00:00", "id": "a91aa71c-f362-46d9-8ad0-fa08628c5020", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "120612bd-9c2c-4ace-833a-062b381934c8", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "6bfeb720-936d-48ec-b2ca-ea68929a5b86", "zone": "ams1"}], + "name": "2015-09-01"}], "current_public_version": "a91aa71c-f362-46d9-8ad0-fa08628c5020", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Drupal is an open source content management + platform powering millions of websites and applications.", "creation_date": + "2016-03-07T21:03:42.336816+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/drupal.png", + "id": "aa098c02-df40-4734-b5f0-a20694160c75", "categories": ["instantapp"], + "name": "Drupal", "modification_date": "2019-03-26T14:00:52.759749+00:00", "versions": + [{"creation_date": "2016-03-11T17:21:50.590025+00:00", "modification_date": + "2016-03-11T17:21:50.590025+00:00", "id": "8e6bfaf4-93c7-4090-821a-8b76e8c32d8c", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "e1171370-0060-4489-8789-f067c86ce7ba", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "92f0db7d-9d0c-4c3d-85cd-a53daed625a6", "zone": "ams1"}], + "name": "2016-03-11"}], "current_public_version": "8e6bfaf4-93c7-4090-821a-8b76e8c32d8c", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Go is an open source programming language + that makes it easy to build simple, reliable, and efficient software.A dynamic, + open source programming language with a focus on simplicity and productivity.", + "creation_date": "2016-03-08T07:01:11.482482+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/golang.png", + "id": "6c8d25c0-cb6f-4220-98aa-830b7e479ba5", "categories": ["instantapp"], + "name": "Golang", "modification_date": "2019-03-26T14:00:52.861225+00:00", "versions": + [{"creation_date": "2018-04-18T08:00:48.175340+00:00", "modification_date": + "2018-04-18T08:00:48.175340+00:00", "id": "880194c8-53ce-4b6b-a274-4f79307e2f8e", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "43213956-c7a3-44b8-9d96-d51fa7457969", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "5ffb52aa-ea55-4596-9d0f-e403701b6624", "zone": "ams1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "bef7a6af-1bab-490a-a6cb-6a07c1b9ac7b", "zone": + "par1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "f0b7d9b8-aa31-45b4-9f7e-a68aa164ce6f", + "zone": "ams1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", + "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": + "arm64", "id": "76ca1eb7-f68f-4770-a7a1-ab7665ae3297", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "0d954c34-341c-483a-be1c-71cf197343ed", "zone": "ams1"}], "name": "2018-04-18T08:00:48.129246"}], + "current_public_version": "880194c8-53ce-4b6b-a274-4f79307e2f8e", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Surf the web in a secure and anonymous + way with OpenVPN InstantApp.", "creation_date": "2016-03-07T21:04:57.667667+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/openvpn.png", "id": "b6f4edc8-21e6-4aa2-8f52-1030cf6d4dd8", + "categories": ["instantapp"], "name": "OpenVPN", "modification_date": "2019-03-26T14:00:52.955853+00:00", + "versions": [{"creation_date": "2019-03-25T13:06:02.622633+00:00", "modification_date": + "2019-03-25T13:06:02.622633+00:00", "id": "d812e374-1169-4c91-aa90-c72acceeecb2", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "b15ddb1a-0611-412e-881a-3aed1b36392b", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", + "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "02906ae8-bf44-4dd0-bd05-6312dd9fa234", + "zone": "par1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "3aa3622c-45d4-4388-9618-cce6974c71a0", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "a5430536-2a51-425d-8613-ef84dae91e27", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "51573d2d-301f-4d24-b0d6-f151728c82f5", "zone": "ams1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "cac79531-98d5-48fa-aba1-8250214b88a3", + "zone": "par1"}], "name": "2019-03-25T13:06:01.961936"}], "current_public_version": + "d812e374-1169-4c91-aa90-c72acceeecb2", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Fedora + is a powerful, flexible operating system that includes the best and latest datacenter + technologies. It puts you in control of all your infrastructure and services.", + "creation_date": "2018-04-19T10:14:08.648100+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", + "id": "4bff4f37-3ef9-457e-9e8d-4a786cb2a5f2", "categories": ["distribution"], + "name": "Fedora 27", "modification_date": "2019-03-26T14:00:53.140907+00:00", + "versions": [{"creation_date": "2018-09-06T10:51:13.009967+00:00", "modification_date": + "2018-09-06T10:51:13.009967+00:00", "id": "45b5823f-8ddf-4ea8-b106-33d2df127cdf", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "097a100e-fd2f-4918-8a5b-d86de5a489be", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "73f0bcd8-a152-4665-ac09-1b105905a475", + "zone": "ams1"}], "name": "2018-09-06T10:51:13.011044"}], "current_public_version": + "45b5823f-8ddf-4ea8-b106-33d2df127cdf", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "The + CentOS Project is a community-driven free software effort focused on delivering + a robust open source ecosystem.", "creation_date": "2018-04-19T10:12:28.968536+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/centos.png", "id": "98fc244a-ed4c-4523-bd17-b9c4070b8e7e", + "categories": ["distribution"], "name": "CentOS 7.4", "modification_date": "2019-03-26T14:00:53.445597+00:00", + "versions": [{"creation_date": "2018-04-20T13:55:06.824033+00:00", "modification_date": + "2018-04-20T13:55:06.824033+00:00", "id": "31be34e5-074d-4c63-8c77-454459f77c3f", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "ec8b431e-ad39-4523-8b94-f3fa7f3cbd06", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "7220ac63-bac8-484b-9d44-93e3bd01f5a6", + "zone": "ams1"}], "name": "2018-04-20T13:55:06.817954"}], "current_public_version": + "31be34e5-074d-4c63-8c77-454459f77c3f", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Ubuntu + Bionic for Machine Learning 10.1", "creation_date": "2019-03-06T17:24:56.871317+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", "id": "e0808ca5-1e0a-4070-8aff-d2e49e9600c1", + "categories": ["Machine Learning"], "name": "Ubuntu Bionic ML 10.1", "modification_date": + "2019-03-26T14:00:53.253241+00:00", "versions": [{"creation_date": "2019-03-06T18:03:45.146468+00:00", + "modification_date": "2019-03-06T18:03:45.146468+00:00", "id": "47d58f71-8382-48d1-88cd-75e5f1ed7df6", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "5f96d290-88cb-4262-845e-578d0aa63201", + "zone": "par1"}], "name": "2019-03-06T18:03:45.081159"}], "current_public_version": + "47d58f71-8382-48d1-88cd-75e5f1ed7df6", "organization": {"id": "11111111-1111-4111-8111-111111111111", + "name": "OCS"}}, {"valid_until": null, "description": "Jenkins provides continuous + integration services for software development.", "creation_date": "2016-03-07T21:07:11.211840+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/jenkins.png", "id": "e7db11f0-6630-4def-8e8d-3a1637f052fa", + "categories": ["instantapp"], "name": "Jenkins Master", "modification_date": + "2019-03-26T14:00:53.544277+00:00", "versions": [{"creation_date": "2016-03-07T22:05:34.563042+00:00", + "modification_date": "2016-03-07T22:05:34.563042+00:00", "id": "7e83060b-169e-4d4f-8116-4a657dca2504", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "8c0b0572-fa1d-4601-9a97-87ad0adebf76", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "6b3537ec-6345-4b60-8a29-37136bd783f0", "zone": "ams1"}], + "name": "2015-06-24"}], "current_public_version": "7e83060b-169e-4d4f-8116-4a657dca2504", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ghost is a simple, powerful publishing + platform that allows you to share your stories with the world.", "creation_date": + "2016-03-07T21:06:37.762509+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ghost.png", + "id": "4653d871-5e19-4093-a08d-f3fca34b9ca8", "categories": ["instantapp"], + "name": "Ghost", "modification_date": "2019-03-26T14:00:53.632160+00:00", "versions": + [{"creation_date": "2016-03-17T18:07:22.400548+00:00", "modification_date": + "2016-03-17T18:07:22.400548+00:00", "id": "76921968-deec-4106-a708-91b10dca27de", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f0ea257d-2883-4ab5-9f58-39e03b4aa4c5", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "7325a77f-bb75-4a39-8cd0-d8af9124fcee", "zone": "ams1"}], + "name": "2016-03-17"}], "current_public_version": "76921968-deec-4106-a708-91b10dca27de", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ruby on Rails is an open-source web framework + that\u2019s optimized for programmer happiness and sustainable productivity.", + "creation_date": "2016-03-07T21:02:50.887200+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/rails.png", + "id": "29cedfd1-3892-4273-90ba-86a886bdb51e", "categories": ["instantapp"], + "name": "Ruby on Rails", "modification_date": "2019-03-26T14:00:53.919313+00:00", + "versions": [{"creation_date": "2016-03-07T21:53:42.510249+00:00", "modification_date": + "2016-03-07T21:53:42.510249+00:00", "id": "22571268-4fd0-4153-9936-14190ae01a82", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "c5015431-7de1-4c45-9024-dfab244f4a4d", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "1a47e0e0-aaaf-436b-a3fe-a1d22db5c91f", "zone": "ams1"}], + "name": "2015-09-23"}], "current_public_version": "22571268-4fd0-4153-9936-14190ae01a82", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "A dynamic, open source programming language + with a focus on simplicity and productivity.", "creation_date": "2016-03-07T22:15:25.347873+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ruby.png", "id": "42866fbe-9168-4f77-8271-09beb6049a07", + "categories": ["instantapp"], "name": "Ruby", "modification_date": "2019-03-26T14:00:54.119256+00:00", + "versions": [{"creation_date": "2018-04-18T10:21:49.119857+00:00", "modification_date": + "2018-04-18T10:21:49.119857+00:00", "id": "5b8c935b-5047-43fd-a423-045dae3e0d78", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "09c71ada-00c6-43de-ad44-c77c5b857a05", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "24f2e8ee-80f1-4a8d-83c4-74ed8cd80ed0", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "e2479a13-414b-4a0c-ba50-d01e67ee8600", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "f83a03fa-58eb-4b35-bda9-1a42b6d6d90d", "zone": "ams1"}], + "name": "2018-04-18T10:21:49.057120"}], "current_public_version": "5b8c935b-5047-43fd-a423-045dae3e0d78", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "A a PHP-powered, flexible Blogging and + CMS application.", "creation_date": "2016-03-07T21:04:38.314597+00:00", "logo": + "https://marketplace-logos.s3.nl-ams.scw.cloud/serendipity.png", "id": "3eadfd08-5939-4738-b0b6-bdd0bb002e9d", + "categories": ["instantapp"], "name": "Serendipity", "modification_date": "2019-03-26T14:00:54.023188+00:00", + "versions": [{"creation_date": "2016-03-07T21:51:12.030869+00:00", "modification_date": + "2016-03-07T21:51:12.030869+00:00", "id": "7ec2fcf2-ab29-457f-843a-b6efde444704", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "e485269b-fe65-4e78-80fc-a7e349770b95", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "85689a55-e288-40f8-8ae2-7984adb5ed14", "zone": "ams1"}], + "name": "2015-09-30"}], "current_public_version": "7ec2fcf2-ab29-457f-843a-b6efde444704", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Minecraft is a game about placing blocks + to build anything you can imagine.", "creation_date": "2016-03-07T21:02:08.702536+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/minecraft.png", "id": + "aa8b6bc7-61c7-4e7c-a1a2-fd6d60ada433", "categories": ["instantapp"], "name": + "Minecraft", "modification_date": "2019-03-26T14:00:54.225616+00:00", "versions": + [{"creation_date": "2016-03-11T18:06:06.529522+00:00", "modification_date": + "2016-03-11T18:06:06.529522+00:00", "id": "2b401358-027d-4029-b35a-984a25c0dd0f", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "6a60fbef-7f69-488b-9be5-6a25f591989f", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "94382ccf-87be-49c8-b253-0a9b5f00b6c4", "zone": "ams1"}], + "name": "2016-03-11"}], "current_public_version": "2b401358-027d-4029-b35a-984a25c0dd0f", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Build your own images on Scaleway.", "creation_date": + "2016-03-07T21:03:08.546795+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/default.png", + "id": "67597b1e-89f7-4fb3-98e2-6e199ca60adb", "categories": ["instantapp"], + "name": "Image Builder", "modification_date": "2019-03-26T14:00:54.321504+00:00", + "versions": [{"creation_date": "2016-10-24T16:21:35.520157+00:00", "modification_date": + "2016-10-24T16:21:35.520157+00:00", "id": "3fc393e9-644d-4f52-b044-28b4fecb167b", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "6d536ddb-9ec4-40bb-ab76-c5aa3173be3c", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "190e9b6d-5ab4-46c5-9fa5-1bf4e5dafc0e", "zone": "ams1"}], + "name": "2016-10-24"}], "current_public_version": "3fc393e9-644d-4f52-b044-28b4fecb167b", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}]}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "69329" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 May 2019 15:10:05 GMT + Link: + - ; rel="last" + Server: + - scaleway_api + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Total-Count: + - "48" + status: 200 OK + code: 200 + duration: "" +- request: + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/0.0.0 + url: https://api.scaleway.com/marketplace/v1/images + method: GET + response: + body: '{"images": [{"valid_until": null, "description": "Etherpad is a highly + customizable Open Source online editor.", "creation_date": "2016-03-07T21:01:06.696775+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/etherpad.png", "id": + "53e87f7e-b173-4e88-b9ae-81c2ab7f168e", "categories": ["instantapp"], "name": + "Etherpad", "modification_date": "2019-03-26T14:00:49.232680+00:00", "versions": + [{"creation_date": "2016-03-07T21:54:43.305997+00:00", "modification_date": + "2016-03-07T21:54:43.305997+00:00", "id": "6fc832a1-6a31-4ac4-9dc5-27a9875e2a32", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f085beb3-b99c-493e-a882-87a2f6d48bf8", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "7cb6244a-7d24-4459-b5eb-ce0053c30633", "zone": "ams1"}], + "name": "2015-09-18"}], "current_public_version": "6fc832a1-6a31-4ac4-9dc5-27a9875e2a32", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Arch Linux is an independently developed + Linux distribution versatile enough to suit any role.", "creation_date": "2016-03-07T20:55:32.213089+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/archlinux.png", "id": + "8f60c5dd-e659-48da-97e3-fb7de42195f5", "categories": ["distribution"], "name": + "Arch Linux", "modification_date": "2019-03-26T14:00:49.327070+00:00", "versions": + [{"creation_date": "2018-04-20T15:59:04.594929+00:00", "modification_date": + "2018-04-20T15:59:04.594929+00:00", "id": "f7696517-bc49-448b-9869-f2c84e7c2a96", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "f21defd0-9fd9-4fb2-a29a-22844a6be3cd", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "3c904f73-080e-4c6f-8b28-8426cfdcb3c7", + "zone": "ams1"}], "name": "2018-04-20T15:59:04.593811"}], "current_public_version": + "f7696517-bc49-448b-9869-f2c84e7c2a96", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Java + is a computer programming language that is concurrent, class-based, object-oriented, + and specifically designed to have as few implementation dependencies as possible.", + "creation_date": "2016-03-07T21:07:46.908969+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/java.png", + "id": "d72d1b73-7460-446b-91fb-b451d079aa4d", "categories": ["instantapp"], + "name": "Java", "modification_date": "2019-03-26T14:00:49.430836+00:00", "versions": + [{"creation_date": "2018-04-18T10:11:18.535736+00:00", "modification_date": + "2018-04-18T10:11:18.535736+00:00", "id": "f3f69cca-aadb-4e5e-94b0-254ce05a6639", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "c50cb4b2-bf7b-47e2-ab5f-3a9d3d4c1aef", "zone": "ams1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "98c93894-26a8-463b-a72b-c9d2b531b95d", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "43c43b5e-1e4f-4905-baef-71df3c565b4d", "zone": "ams1"}, + {"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", + "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", + "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], + "arch": "x86_64", "id": "0c3f9f03-f490-444b-a05e-f342e917fed0", "zone": "par1"}, + {"compatible_commercial_types": ["C1"], "arch": "arm", "id": "5e07622b-ad8b-4f65-b55f-cca18c3c0bbf", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", + "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": + "arm64", "id": "c0330755-e5d0-4c2c-ad0e-70687e1dccbb", "zone": "par1"}], "name": + "2018-04-18T10:11:18.477156"}], "current_public_version": "f3f69cca-aadb-4e5e-94b0-254ce05a6639", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Docker is an open platform for developers + and sysadmins to build, ship, and run distributed applications.", "creation_date": + "2016-03-05T15:11:26.847640+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/docker.png", + "id": "c1b530d8-0ca0-45c4-80db-ba06608287b2", "categories": ["instantapp"], + "name": "Docker", "modification_date": "2019-03-26T14:00:49.524465+00:00", "versions": + [{"creation_date": "2019-03-07T17:07:39.090644+00:00", "modification_date": + "2019-03-07T17:07:39.090644+00:00", "id": "bf30c937-6e89-4019-ad2a-92156a62cf3e", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "89c80d27-ddf4-4ffa-8215-b335cce3fd05", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "99e2a9c6-f0b9-42b6-8823-8b0d86ffe9bf", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "45a7e942-1fb0-48c0-bbf6-0acb9af24604", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "c669011a-ee16-42b6-b0c3-ecd19e419539", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "dcf35840-c007-4c8b-a48b-227cfd8a347b", + "zone": "ams1"}], "name": "2019-03-07T17:07:39.004809"}], "current_public_version": + "bf30c937-6e89-4019-ad2a-92156a62cf3e", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "ELK + stack is an environment that lets you collect, store and visualize your logs.", + "creation_date": "2016-03-07T21:07:26.481966+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/elk.png", + "id": "d9bc56e5-0a20-41d8-b581-f54e636888c8", "categories": ["instantapp"], + "name": "ELK stack", "modification_date": "2019-03-26T14:00:49.621237+00:00", + "versions": [{"creation_date": "2016-03-22T10:45:53.277539+00:00", "modification_date": + "2016-03-22T10:45:53.277539+00:00", "id": "2ac56aca-3aa9-44b7-8145-2a47173819f3", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "bf234cb3-0e42-4642-8f9b-5c74121ebea4", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "23fefa88-e769-43e4-abd2-a2024366f529", "zone": "ams1"}], + "name": "2016-03-22"}], "current_public_version": "2ac56aca-3aa9-44b7-8145-2a47173819f3", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ubuntu is the ideal distribution for scale-out + computing, Ubuntu Server helps you make the most of your infrastructure.", "creation_date": + "2016-04-22T13:27:33.769932+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", + "id": "acf93867-88d9-40ee-99ea-6b2bb1ee8f0c", "categories": ["distribution"], + "name": "Ubuntu Xenial", "modification_date": "2019-03-26T14:00:49.712120+00:00", + "versions": [{"creation_date": "2018-09-05T21:16:05.803947+00:00", "modification_date": + "2018-09-05T21:16:05.803947+00:00", "id": "265b32a3-59a5-402f-9710-6040c4ef47d3", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f71f2ad9-7810-405b-9181-2e8d5e1feb18", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "4035ca92-5292-4c6e-aa17-759fbc32765e", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "b5a754d1-8262-47d2-acb2-22739295bb68", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "9feb1aec-492f-4144-a64f-bd67578a3b01", "zone": "ams1"}, + {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", + "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": "2c1a1716-5570-4668-a50a-860c90beabf6", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "ba6a7295-7980-49c1-bd3f-e3a1819b951f", "zone": "ams1"}], "name": + "2018-09-05T21:16:05.804627"}], "current_public_version": "265b32a3-59a5-402f-9710-6040c4ef47d3", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "GitLab is a web-based Git repository manager + with wiki and issue tracking features.", "creation_date": "2016-03-07T21:06:22.770864+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/gitlab.png", "id": "233074b9-e2ba-4e78-818e-dd4930ce6bee", + "categories": ["instantapp"], "name": "GitLab", "modification_date": "2019-04-09T13:31:04.022755+00:00", + "versions": [{"creation_date": "2019-04-09T13:31:03.648676+00:00", "modification_date": + "2019-04-09T13:31:03.648676+00:00", "id": "a389c94b-8b19-4528-a4f6-0b7cac3425e9", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "06a2a6e9-922d-4353-9472-bbb1f79fda63", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "4527e41c-0e90-43a8-857e-d9584bf8467f", "zone": "par1"}], "name": "2019-04-09T13:31:03.352588"}], + "current_public_version": "a389c94b-8b19-4528-a4f6-0b7cac3425e9", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Pydio is the mature, open-source software + solution for file sharing and synchronization with an intuitive user interfaces.", + "creation_date": "2016-03-07T21:05:29.425733+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/pydio.png", + "id": "ec8419f9-2146-467d-982b-eacbb32a4087", "categories": ["instantapp"], + "name": "Pydio", "modification_date": "2019-03-26T14:00:49.887331+00:00", "versions": + [{"creation_date": "2016-03-07T22:05:57.451042+00:00", "modification_date": + "2016-03-07T22:05:57.451042+00:00", "id": "e982e06a-927b-4373-a82c-770123aae518", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "8428b1d9-07ac-4a90-bf23-1ac34c73c3c0", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "a6d4aace-fb6a-48fe-9c4e-de8a91b55af2", "zone": "ams1"}], + "name": "2015-06-23"}], "current_public_version": "e982e06a-927b-4373-a82c-770123aae518", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Nextcloud is an open source, self-hosted + file share and communication platform.", "creation_date": "2019-04-16T12:22:56.930842+00:00", + "logo": "http://marketplace-logos.s3.nl-ams.scw.cloud/nextcloud.png", "id": + "7d4a7cb1-1fd5-4a64-920b-c79f47367254", "categories": ["instantapp"], "name": + "NextCloud", "modification_date": "2019-04-16T12:25:38.758921+00:00", "versions": + [{"creation_date": "2019-04-16T12:25:38.052537+00:00", "modification_date": + "2019-04-16T12:25:38.052537+00:00", "id": "2fe66cc6-8985-4b5f-8325-83acc0589436", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "e9af0a24-4312-4305-9386-b3a79e02f92d", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "c38073cf-ee40-4dc2-8059-ec2845f38f46", "zone": "ams1"}, + {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", + "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", + "VC1M"], "arch": "x86_64", "id": "b9e319f5-ac4c-400d-8ff6-a6a769755190", "zone": + "ams1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "0390c3e0-186d-4b24-8d0d-0e08b74fb59a", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "900971a4-3a3e-4ef9-b92f-b33c366c9f5c", "zone": + "par1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", + "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", + "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", + "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": "7b7d4dde-6fe1-4586-a5a5-ae1af2ca2605", + "zone": "par1"}], "name": "2019-04-16T12:25:37.374676"}], "current_public_version": + "2fe66cc6-8985-4b5f-8325-83acc0589436", "organization": {"id": "11111111-1111-4111-8111-111111111111", + "name": "OCS"}}, {"valid_until": null, "description": "PrestaShop is a free, + open source e-commerce solution.", "creation_date": "2016-03-07T21:01:47.997930+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/prestashop.png", "id": + "58a551e0-1b8b-4c83-82e7-1b4602ad43d1", "categories": ["instantapp"], "name": + "PrestaShop", "modification_date": "2019-03-26T14:00:50.067950+00:00", "versions": + [{"creation_date": "2018-05-16T14:57:16.059809+00:00", "modification_date": + "2018-05-16T14:57:16.059809+00:00", "id": "6c459ab1-4f1a-4f87-b92e-c00849c93fde", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "4d07fcfa-ccda-4945-81aa-8de2206b39c0", + "zone": "par1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "73db574d-d5a0-49d5-b6ca-dd662895fac3", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "c97dc20f-8066-4d56-aabf-2b75162c0f9f", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "c78c3206-eb2b-4217-ad7c-0aca98dec145", + "zone": "ams1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "7f91941c-f06a-4103-91a4-793f03b11fda", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "271a9c1f-73ef-4943-bac7-799130228040", "zone": "ams1"}], + "name": "2018-05-16T14:57:15.505378"}], "current_public_version": "6c459ab1-4f1a-4f87-b92e-c00849c93fde", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The intended audience of this InstantApp + is Python developers who want to bootstrap or test a Python application easily, + in seconds.", "creation_date": "2016-03-07T21:05:46.642023+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/python.png", + "id": "5c0f7971-c308-442e-82ab-2eb147439bd7", "categories": ["instantapp"], + "name": "Python", "modification_date": "2019-03-26T14:00:49.970905+00:00", "versions": + [{"creation_date": "2018-04-17T16:43:36.089412+00:00", "modification_date": + "2018-04-17T16:43:36.089412+00:00", "id": "2642a982-e61d-4a58-8105-8838a69a85e3", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "70b9c9cf-c2d9-4a80-b450-a7aef8226d96", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "5218fa4e-8239-4831-ac2a-c96e23f387a2", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f205e2a6-621a-4534-a5d1-36f6cf1f8376", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "613a5226-3d97-4f0e-abe2-99385a050784", "zone": "ams1"}], + "name": "2018-04-17T16:43:36.031203"}], "current_public_version": "2642a982-e61d-4a58-8105-8838a69a85e3", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Fedora is a powerful, flexible operating + system that includes the best and latest datacenter technologies. It puts you + in control of all your infrastructure and services.", "creation_date": "2018-05-03T09:51:57.274011+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", "id": "30d0f04f-6422-4b74-9ce9-1c2267419978", + "categories": ["distribution"], "name": "Fedora 28", "modification_date": "2019-03-26T14:00:50.156015+00:00", + "versions": [{"creation_date": "2018-05-03T12:01:10.147973+00:00", "modification_date": + "2018-05-03T12:01:10.147973+00:00", "id": "49e33199-28cc-44d6-bb2e-a6147944ad5c", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "830aad94-24e5-4363-b2c3-e62921bd9294", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "c9cd1782-2159-44b8-83b1-9c48ed6c8a63", + "zone": "par1"}], "name": "2018-05-03T12:01:10.135200"}], "current_public_version": + "49e33199-28cc-44d6-bb2e-a6147944ad5c", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "WordPress + is the most popular web software you can use to create a beautiful website or + blog.", "creation_date": "2016-03-07T21:03:59.783534+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/wordpress.png", + "id": "215a50f9-0ba8-4e9c-a4e7-10caf50e3586", "categories": ["instantapp"], + "name": "WordPress", "modification_date": "2019-03-26T14:00:50.250657+00:00", + "versions": [{"creation_date": "2019-03-08T08:58:28.971149+00:00", "modification_date": + "2019-03-08T08:58:28.971149+00:00", "id": "3fb22e1f-de7f-4787-9bf8-32770151a45e", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "8523fb41-500a-4f21-998b-890908da6119", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "5645133b-67a3-4644-9941-16f7e2b428ea", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "757fac76-5265-46f8-8a1f-00c0fb270010", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "7a892c1a-bbdc-491f-9974-4008e3708664", "zone": "ams1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "726334eb-0733-4b6a-becd-769ff9bfe16d", + "zone": "ams1"}], "name": "2019-03-08T08:58:28.893091"}], "current_public_version": + "3fb22e1f-de7f-4787-9bf8-32770151a45e", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Ubuntu + Bionic for Machine Learning 9.2", "creation_date": "2019-03-06T17:24:29.909001+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", "id": "7e48e55a-7b46-4e4f-b2d2-6b7316cdca8c", + "categories": ["Machine Learning"], "name": "Ubuntu Bionic ML 9.2", "modification_date": + "2019-03-26T14:00:50.353326+00:00", "versions": [{"creation_date": "2019-03-06T18:05:49.119145+00:00", + "modification_date": "2019-03-06T18:05:49.119145+00:00", "id": "905865bf-e34c-46b0-b7e2-5e11922e6511", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "6bd566a1-c5b6-4c59-be37-752e1491ce1f", + "zone": "par1"}], "name": "2019-03-06T18:05:49.043867"}], "current_public_version": + "905865bf-e34c-46b0-b7e2-5e11922e6511", "organization": {"id": "11111111-1111-4111-8111-111111111111", + "name": "OCS"}}, {"valid_until": null, "description": "Debian is a free, powerful + and stable operating system.", "creation_date": "2016-03-05T14:52:36.322319+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/debian.png", "id": "fb619bdf-834e-4c71-b7b8-15b5546d18bd", + "categories": ["distribution"], "name": "Debian Jessie", "modification_date": + "2019-03-26T14:00:50.449502+00:00", "versions": [{"creation_date": "2018-04-10T22:31:04.322822+00:00", + "modification_date": "2018-04-10T22:31:04.322822+00:00", "id": "d3846a7b-8219-4938-ad96-cc2173e22481", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "2dfad6d2-e527-4e93-8eb1-8dc57803b310", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "610f68d5-cbad-4923-98ae-782af8f3b527", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "dc22e553-2d2e-4689-94f8-8817db824202", "zone": "ams1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "2e570f53-199e-47cc-95dd-f7bc392496e3", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "abf9e3a2-7171-4764-91ef-57f30b21193d", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "69cbdd54-88a1-4458-b75e-662a0848a7ce", "zone": "ams1"}], + "name": "2018-04-10T22:31:04.321157"}], "current_public_version": "d3846a7b-8219-4938-ad96-cc2173e22481", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Alpine Linux is security-oriented, lightweight + Linux distribution based on musl libc and busybox.", "creation_date": "2016-03-05T14:49:50.255568+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/alpinelinux.png", "id": + "c0649a2a-e6bf-4712-9303-8d967153209c", "categories": ["distribution"], "name": + "Alpine Linux", "modification_date": "2019-03-26T14:00:54.425917+00:00", "versions": + [{"creation_date": "2018-04-26T10:18:10.201002+00:00", "modification_date": + "2018-04-26T10:18:10.201002+00:00", "id": "be2293b6-9eba-4497-9659-2cfb927483b5", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "24141068-1043-4885-bf2b-8290f617e273", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "241b0bb3-9eed-4a7b-b0fd-71c45452ac95", + "zone": "ams1"}], "name": "2018-04-26T10:18:10.196011"}], "current_public_version": + "be2293b6-9eba-4497-9659-2cfb927483b5", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "A + painless self-hosted Git service.", "creation_date": "2016-03-07T21:00:44.946716+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/gogs.png", "id": "90d512b8-e4b7-4821-98e9-78241d73a7e6", + "categories": ["instantapp"], "name": "Gogs", "modification_date": "2019-03-26T14:00:54.513196+00:00", + "versions": [{"creation_date": "2018-05-16T15:11:25.881343+00:00", "modification_date": + "2018-05-16T15:11:25.881343+00:00", "id": "1b9e22e3-6a29-4f42-acfd-281ad086ee1d", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "776705c4-be8e-4a27-b740-2e8bbba518c5", + "zone": "par1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "a513a250-e6e9-4687-892e-9d10b29e3972", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "d1341ece-ffda-4386-ad3a-27d60b650401", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "69b8bc0e-7771-42af-a4ad-ca756c31a18a", "zone": "ams1"}], + "name": "2018-05-16T15:11:25.303762"}], "current_public_version": "1b9e22e3-6a29-4f42-acfd-281ad086ee1d", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Kanboard is a project management software + that use the Kanban methodology.", "creation_date": "2016-03-07T21:03:25.999254+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/kanboard.png", "id": + "80e57489-db83-47d2-98fb-2acd0cfe99cc", "categories": ["instantapp"], "name": + "Kanboard", "modification_date": "2019-03-26T14:00:50.554737+00:00", "versions": + [{"creation_date": "2016-03-07T22:04:31.512162+00:00", "modification_date": + "2016-03-07T22:04:31.512162+00:00", "id": "db6dbf80-c69f-47c7-b077-8044ea756770", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "8ed594e6-9b91-4371-8273-244764ea63f7", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "22cdcb16-fb59-4b27-a234-b20408cfc340", "zone": "ams1"}], + "name": "2015-08-31"}], "current_public_version": "db6dbf80-c69f-47c7-b077-8044ea756770", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "A powerful and flexible web hosting control + panel.", "creation_date": "2016-03-07T21:00:27.542536+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/webmin.png", + "id": "f300f8c1-1e1d-42d6-8a4b-9e661eb5477d", "categories": ["instantapp"], + "name": "Webmin", "modification_date": "2019-03-26T14:00:50.646395+00:00", "versions": + [{"creation_date": "2016-11-30T11:02:00.852921+00:00", "modification_date": + "2016-11-30T11:02:00.852921+00:00", "id": "0faf919a-4ad4-4db4-9191-6ec9972e75d1", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "b4173ca3-a7f5-4dbe-bc07-3ee038df065c", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "0eb66d90-fd78-4de2-810b-21bb79060abd", "zone": "ams1"}], + "name": "2016-11-30"}], "current_public_version": "0faf919a-4ad4-4db4-9191-6ec9972e75d1", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The CentOS Project is a community-driven + free software effort focused on delivering a robust open source ecosystem.", + "creation_date": "2019-03-06T11:27:48.406290+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/centos.png", + "id": "1d47b370-ac63-43b1-9f34-7328675e5e18", "categories": ["distribution"], + "name": "CentOS 7.6", "modification_date": "2019-03-26T14:00:50.839069+00:00", + "versions": [{"creation_date": "2019-03-18T09:29:00.247544+00:00", "modification_date": + "2019-03-18T09:29:00.247544+00:00", "id": "53138072-3099-4566-8b18-de7b2739696a", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "05794ee5-c6d2-4d69-86dd-f1fc9032921d", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "0f44b130-2bc7-4f82-993e-de9d1042c56e", "zone": "par1"}], "name": "2019-03-18T09:29:00.168590"}], + "current_public_version": "53138072-3099-4566-8b18-de7b2739696a", "organization": + {"id": "11111111-1111-4111-8111-111111111111", "name": "OCS"}}, {"valid_until": + null, "description": "Jenkins provides continuous integration services for software + development.", "creation_date": "2016-03-08T07:17:47.815384+00:00", "logo": + "https://marketplace-logos.s3.nl-ams.scw.cloud/jenkins.png", "id": "160a0283-bddc-4359-b2fd-2390a00926f1", + "categories": ["instantapp"], "name": "Jenkins Slave", "modification_date": + "2019-03-26T14:00:50.924729+00:00", "versions": [{"creation_date": "2016-03-08T07:20:29.842334+00:00", + "modification_date": "2016-03-08T07:20:29.842334+00:00", "id": "181e1ed0-69b6-41f7-8212-16027f12234d", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "5730f693-edc6-4008-9ac0-3aef9a6f9d85", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "ff393ce9-4f72-4d1b-8212-a1c1ef78e574", "zone": "ams1"}], + "name": "2015-06-24"}], "current_public_version": "181e1ed0-69b6-41f7-8212-16027f12234d", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Discourse is an open source Internet forum + software application.", "creation_date": "2016-03-07T21:08:17.200172+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/discourse.png", "id": + "19a71b27-1825-4ac6-891a-50d78a096374", "categories": ["instantapp"], "name": + "Discourse", "modification_date": "2019-03-26T14:00:51.024987+00:00", "versions": + [{"creation_date": "2016-03-07T21:57:06.319711+00:00", "modification_date": + "2016-03-07T21:57:06.319711+00:00", "id": "07eeeb6c-a911-4e08-a3a5-e4ff75385dab", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "1d40502f-2068-4d8b-a4fc-446e8ec2883e", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "c2e98204-d533-4d4b-8433-e9a1b1be801f", "zone": "ams1"}], + "name": "2015-09-10"}], "current_public_version": "07eeeb6c-a911-4e08-a3a5-e4ff75385dab", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Node.js is an open source, cross-platform + runtime environment for server-side and networking applications.", "creation_date": + "2016-03-07T21:06:07.014951+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/nodejs.png", + "id": "d11d7cc2-6ec8-4f95-a286-24fb5bac9e39", "categories": ["instantapp"], + "name": "Node.js", "modification_date": "2019-03-26T14:00:51.148549+00:00", + "versions": [{"creation_date": "2018-04-18T10:07:15.744660+00:00", "modification_date": + "2018-04-18T10:07:15.744660+00:00", "id": "af308511-bcb3-4583-b0e0-79dbb1eea63e", + "local_images": [{"compatible_commercial_types": [], "arch": "arm", "id": "a8020f20-8a66-43f3-8253-35941db3d237", + "zone": "ams1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "3cc79cc6-4649-46d9-a2b6-698f1236e1d0", "zone": "ams1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "c9fb2bed-a9b8-4e1a-bf15-db8e763fe7a7", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "f01db1d0-092a-47de-a32e-09bd6bda7715", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "6f2e99e8-da99-4990-b689-7294e8a604fa", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "03980aee-14cd-44f1-be3c-508c8b8a19e6", "zone": "par1"}], "name": "2018-04-18T10:07:15.691016"}], + "current_public_version": "af308511-bcb3-4583-b0e0-79dbb1eea63e", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "An open source, in-memory data structure + store, used as database, cache and message broker.", "creation_date": "2016-03-07T20:59:43.537434+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/default.png", "id": "8e4ee9e3-ec32-4177-b2c3-97f44ad102d2", + "categories": ["instantapp"], "name": "Redis", "modification_date": "2019-03-26T14:00:51.245359+00:00", + "versions": [{"creation_date": "2016-03-07T21:47:04.576259+00:00", "modification_date": + "2016-03-07T21:47:04.576259+00:00", "id": "612174bf-c1aa-423f-9089-d15de44dafba", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "57abdeb5-6626-47e7-bfff-839c603f5c43", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "341413dd-e759-4575-93f7-f6ed18a3a9a7", "zone": "ams1"}], + "name": "2015-10-20"}], "current_public_version": "612174bf-c1aa-423f-9089-d15de44dafba", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The torrents InstantApp spawns a private + server to upload and download your digital files.", "creation_date": "2016-03-07T21:08:02.980958+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/seedbox.png", "id": "4e18f1fc-0b66-4692-a38d-bfa4c94f29de", + "categories": ["instantapp"], "name": "Torrents", "modification_date": "2019-03-26T14:00:51.427329+00:00", + "versions": [{"creation_date": "2019-03-25T13:04:02.099902+00:00", "modification_date": + "2019-03-25T13:04:02.099902+00:00", "id": "53d2e4fb-20df-4ba9-8d65-29256f2be480", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "41d0db97-4822-4642-96ec-6f3fbcfc167c", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "3fbe5f72-81da-4a0a-91ef-36ab68fc801e", "zone": "ams1"}, + {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", + "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", + "VC1M"], "arch": "x86_64", "id": "1aed7396-79dc-431d-af03-d3dde35d195f", "zone": + "ams1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "398875b6-de43-4946-976f-ba5189954912", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "a3160162-3d72-4632-8e42-4849a1280743", "zone": + "par1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", + "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", + "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", + "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": "f5d116e3-2b58-44cf-a83a-cd0682135473", + "zone": "par1"}], "name": "2019-03-25T13:04:01.408435"}], "current_public_version": + "53d2e4fb-20df-4ba9-8d65-29256f2be480", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Redmine + is a free and open source, web-based project management and issue tracking tool.", + "creation_date": "2016-03-07T21:02:29.445704+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/redmine.png", + "id": "6746cbf8-3732-4c23-ba15-34773652f058", "categories": ["instantapp"], + "name": "Redmine", "modification_date": "2019-03-26T14:00:51.662280+00:00", + "versions": [{"creation_date": "2016-03-22T10:48:06.775760+00:00", "modification_date": + "2016-03-22T10:48:06.775760+00:00", "id": "e0e29004-bfae-4663-a276-f2c9df70c698", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "a0df14e0-eb87-4f17-9c27-01c0106e13d3", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "d97ff062-7f89-4263-8f0c-cee31f1f25fd", "zone": "ams1"}], + "name": "2016-03-22"}], "current_public_version": "e0e29004-bfae-4663-a276-f2c9df70c698", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ubuntu is the ideal distribution for scale-out + computing, Ubuntu Server helps you make the most of your infrastructure.", "creation_date": + "2018-04-27T14:07:25.221998+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", + "id": "b381b2bf-804a-4b12-91f6-9f4ff273462f", "categories": ["distribution"], + "name": "Ubuntu Bionic", "modification_date": "2019-03-26T14:00:51.745705+00:00", + "versions": [{"creation_date": "2019-03-05T16:39:34.893732+00:00", "modification_date": + "2019-03-05T16:39:34.893732+00:00", "id": "e640c621-305b-45f5-975f-a3f80c1cec66", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "f974feac-abae-4365-b988-8ec7d1cec10d", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "f63fe42a-900f-4a5e-ba99-ab0e59469b7e", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "b4bdbee1-e1f1-4436-8de4-bdb1b6ba4803", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "9444d178-2285-4842-ac35-5e86eda8da91", "zone": "ams1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "a5076337-734f-4b99-95ed-9a5bc73b9b09", "zone": "ams1"}, + {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", + "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": "arm64", "id": "7663c62b-40e3-4e6b-a835-70723ec2050b", + "zone": "ams1"}], "name": "2019-03-05T16:39:34.377275"}], "current_public_version": + "e640c621-305b-45f5-975f-a3f80c1cec66", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Fedora + is a powerful, flexible operating system that includes the best and latest datacenter + technologies. It puts you in control of all your infrastructure and services.", + "creation_date": "2019-03-06T09:07:51.652433+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", + "id": "69adec15-f1a7-469a-9ba5-868577832521", "categories": ["distribution"], + "name": "Fedora 29", "modification_date": "2019-03-26T14:00:51.848785+00:00", + "versions": [{"creation_date": "2019-03-06T09:08:01.112958+00:00", "modification_date": + "2019-03-06T09:08:01.112958+00:00", "id": "a0f02365-f1af-48cb-b82d-75853a4e05e1", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "541f4562-5417-4b59-85d6-caaf64c1f127", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "3c0f706e-0947-47a3-88a3-595c29f7567a", "zone": "ams1"}], "name": "2019-03-06T09:08:01.016040"}], + "current_public_version": "a0f02365-f1af-48cb-b82d-75853a4e05e1", "organization": + {"id": "11111111-1111-4111-8111-111111111111", "name": "OCS"}}, {"valid_until": + null, "description": "self-hosted Slack-alternative", "creation_date": "2016-07-11T14:52:57.803007+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/mattermost.png", "id": + "98ad7ccb-cc7f-4828-9da3-113e9c1bd2db", "categories": ["instantapp"], "name": + "Mattermost", "modification_date": "2019-03-26T14:00:51.938920+00:00", "versions": + [{"creation_date": "2018-05-03T10:27:55.610920+00:00", "modification_date": + "2018-05-03T10:27:55.610920+00:00", "id": "42371bf7-c1ca-4889-a6d4-43febda865ca", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "486e128c-fde7-42d7-9200-5d91b8dc2761", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "eb2ed407-177c-4195-a4ca-f3baa85e62ed", + "zone": "ams1"}], "name": "2018-05-03T10:27:55.021511"}], "current_public_version": + "42371bf7-c1ca-4889-a6d4-43febda865ca", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Ubuntu + is the ideal distribution for scale-out computing, Ubuntu Server helps you make + the most of your infrastructure.", "creation_date": "2016-03-05T14:51:48.354036+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", "id": "c2292eda-bb2a-4399-a226-91f82525b75f", + "categories": ["distribution"], "name": "Ubuntu Trusty", "modification_date": + "2019-03-26T14:00:52.034055+00:00", "versions": [{"creation_date": "2017-01-05T13:56:38.476659+00:00", + "modification_date": "2017-01-05T13:56:38.476659+00:00", "id": "bf7f0487-213e-4d62-a423-fada39e06dcb", + "local_images": [{"compatible_commercial_types": [], "arch": "arm", "id": "e37df0e6-91e8-4adc-9944-318ad75c13ca", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "27ccbd68-090d-4f95-a342-db2c1c8f3628", "zone": "par1"}], "name": "2017-01-05"}], + "current_public_version": "bf7f0487-213e-4d62-a423-fada39e06dcb", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "The CentOS Project is a community-driven + free software effort focused on delivering a robust open source ecosystem.", + "creation_date": "2017-06-22T13:15:23.907335+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/centos.png", + "id": "260b68bc-533c-4432-9a43-7178fc76ee02", "categories": ["distribution"], + "name": "CentOS 7.3", "modification_date": "2019-03-26T14:00:52.206561+00:00", + "versions": [{"creation_date": "2017-11-09T17:07:12.589821+00:00", "modification_date": + "2017-11-09T17:07:12.589821+00:00", "id": "1398b772-21d8-4450-bd7d-9b0441c59bdb", + "local_images": [{"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", + "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": + "arm64", "id": "4d43ed62-617e-480b-9318-4273c456c7f4", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "ddbc2580-8b92-4538-86a9-728243900919", + "zone": "ams1"}], "name": "2017-11-09T17:07:12.511348"}], "current_public_version": + "1398b772-21d8-4450-bd7d-9b0441c59bdb", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Debian + is a free, powerful and stable operating system.", "creation_date": "2017-06-26T15:37:13.460764+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/debian.png", "id": "c94b5df7-e698-4ac9-b273-565d18f5f8d2", + "categories": ["distribution"], "name": "Debian Stretch", "modification_date": + "2019-03-26T14:00:52.355447+00:00", "versions": [{"creation_date": "2019-03-05T17:19:56.355135+00:00", + "modification_date": "2019-03-05T17:19:56.355135+00:00", "id": "19ae7ee0-6164-4327-8c04-9bac122fa271", + "local_images": [{"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", + "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": "92ccf589-2d7f-4f1a-938c-8f3e8fdf0fb8", + "zone": "ams1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "2c62201d-19d4-4ea0-940d-dd13d9849783", + "zone": "ams1"}, {"compatible_commercial_types": ["GP1-XS", "DEV1-M", "DEV1-L", + "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "9a53e825-19f9-4e1f-b841-dd921e4e1b39", "zone": "par1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "1eddbd4c-3a60-45b3-b2f7-26ab7bd2ccd2", "zone": + "par1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", + "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": "arm64", "id": + "18f57fd2-51e9-4568-95f4-92ce03e6ef84", "zone": "par1"}, {"compatible_commercial_types": + ["ARM64-4GB", "ARM64-128GB", "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", + "ARM64-64GB"], "arch": "arm64", "id": "6e592c09-8f8d-4b66-8d78-dc72a767ac39", + "zone": "ams1"}], "name": "2019-03-05T17:19:55.857344"}], "current_public_version": + "19ae7ee0-6164-4327-8c04-9bac122fa271", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "ownCloud + lets you sync & share your files, calendar, contacts and more. Access your data + from all your devices, on an open platform you can extend and modify.", "creation_date": + "2016-03-07T21:05:14.365925+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/owncloud.png", + "id": "e22a5d54-ecb5-4fdd-a130-a473737ff7ab", "categories": ["instantapp"], + "name": "ownCloud", "modification_date": "2019-03-26T14:00:52.457272+00:00", + "versions": [{"creation_date": "2018-04-18T10:09:39.010195+00:00", "modification_date": + "2018-04-18T10:09:39.010195+00:00", "id": "c9c02a9c-e072-48af-aefd-bf6be9028022", + "local_images": [{"compatible_commercial_types": [], "arch": "arm", "id": "a5fb716a-1c60-4740-a179-98ce315ca3d7", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "2fdbbbb4-3b63-403b-9604-27713971efd6", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "4208a611-a789-40ea-ac0e-fb3001ee39a9", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-L", "RENDER-S", "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", + "C2M", "VC1S", "START1-S", "X64-30GB", "GP1-L", "GP1-M", "GP1-S", "START1-L", + "START1-M", "VC1L", "VC1M", "X64-120GB", "X64-60GB"], "arch": "x86_64", "id": + "93de8eae-535f-47bd-88fa-84af7b5eaf76", "zone": "par1"}], "name": "2018-04-18T10:09:38.952503"}], + "current_public_version": "c9c02a9c-e072-48af-aefd-bf6be9028022", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "LEMP stack is a version where Apache has + been replaced with the more lightweight web server Nginx.", "creation_date": + "2016-03-07T21:06:53.552980+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/lemp.png", + "id": "986ba672-b489-4f66-9e3b-90194ac336d4", "categories": ["instantapp"], + "name": "LEMP stack", "modification_date": "2019-04-09T13:31:12.129567+00:00", + "versions": [{"creation_date": "2019-04-09T13:31:11.315416+00:00", "modification_date": + "2019-04-09T13:31:11.315416+00:00", "id": "a2e5ed1a-6f01-4f20-aabd-4115c67df590", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "32332006-1420-4260-97c7-c1da586f68cd", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "d16622f6-32c1-4d16-a3ca-38b23d3a25fb", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", + "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "1bd37d60-4494-485f-9a82-0a211005489c", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "415d3727-0013-419a-abc6-1a688b096730", "zone": "ams1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "26c3727a-5b77-4b26-89c9-445ea2006f07", + "zone": "par1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "155ab61a-e069-4acb-bae3-e8217c5c0376", + "zone": "ams1"}], "name": "2019-04-09T13:31:10.613803"}], "current_public_version": + "a2e5ed1a-6f01-4f20-aabd-4115c67df590", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Fedora + is a powerful, flexible operating system that includes the best and latest datacenter + technologies. It puts you in control of all your infrastructure and services.", + "creation_date": "2016-03-07T20:55:03.718181+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", + "id": "0e24ac4c-2fa7-4602-b790-02b74b698d86", "categories": ["distribution"], + "name": "Fedora", "modification_date": "2019-03-26T14:00:52.575424+00:00", "versions": + [{"creation_date": "2016-03-07T22:03:48.364794+00:00", "modification_date": + "2016-03-07T22:03:48.364794+00:00", "id": "a91aa71c-f362-46d9-8ad0-fa08628c5020", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "120612bd-9c2c-4ace-833a-062b381934c8", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "6bfeb720-936d-48ec-b2ca-ea68929a5b86", "zone": "ams1"}], + "name": "2015-09-01"}], "current_public_version": "a91aa71c-f362-46d9-8ad0-fa08628c5020", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Drupal is an open source content management + platform powering millions of websites and applications.", "creation_date": + "2016-03-07T21:03:42.336816+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/drupal.png", + "id": "aa098c02-df40-4734-b5f0-a20694160c75", "categories": ["instantapp"], + "name": "Drupal", "modification_date": "2019-03-26T14:00:52.759749+00:00", "versions": + [{"creation_date": "2016-03-11T17:21:50.590025+00:00", "modification_date": + "2016-03-11T17:21:50.590025+00:00", "id": "8e6bfaf4-93c7-4090-821a-8b76e8c32d8c", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "e1171370-0060-4489-8789-f067c86ce7ba", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "92f0db7d-9d0c-4c3d-85cd-a53daed625a6", "zone": "ams1"}], + "name": "2016-03-11"}], "current_public_version": "8e6bfaf4-93c7-4090-821a-8b76e8c32d8c", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Go is an open source programming language + that makes it easy to build simple, reliable, and efficient software.A dynamic, + open source programming language with a focus on simplicity and productivity.", + "creation_date": "2016-03-08T07:01:11.482482+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/golang.png", + "id": "6c8d25c0-cb6f-4220-98aa-830b7e479ba5", "categories": ["instantapp"], + "name": "Golang", "modification_date": "2019-03-26T14:00:52.861225+00:00", "versions": + [{"creation_date": "2018-04-18T08:00:48.175340+00:00", "modification_date": + "2018-04-18T08:00:48.175340+00:00", "id": "880194c8-53ce-4b6b-a274-4f79307e2f8e", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "43213956-c7a3-44b8-9d96-d51fa7457969", + "zone": "par1"}, {"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "5ffb52aa-ea55-4596-9d0f-e403701b6624", "zone": "ams1"}, {"compatible_commercial_types": + ["C1"], "arch": "arm", "id": "bef7a6af-1bab-490a-a6cb-6a07c1b9ac7b", "zone": + "par1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "f0b7d9b8-aa31-45b4-9f7e-a68aa164ce6f", + "zone": "ams1"}, {"compatible_commercial_types": ["ARM64-8GB", "ARM64-2GB", + "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", "ARM64-16GB"], "arch": + "arm64", "id": "76ca1eb7-f68f-4770-a7a1-ab7665ae3297", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", + "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", "id": + "0d954c34-341c-483a-be1c-71cf197343ed", "zone": "ams1"}], "name": "2018-04-18T08:00:48.129246"}], + "current_public_version": "880194c8-53ce-4b6b-a274-4f79307e2f8e", "organization": + {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Surf the web in a secure and anonymous + way with OpenVPN InstantApp.", "creation_date": "2016-03-07T21:04:57.667667+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/openvpn.png", "id": "b6f4edc8-21e6-4aa2-8f52-1030cf6d4dd8", + "categories": ["instantapp"], "name": "OpenVPN", "modification_date": "2019-03-26T14:00:52.955853+00:00", + "versions": [{"creation_date": "2019-03-25T13:06:02.622633+00:00", "modification_date": + "2019-03-25T13:06:02.622633+00:00", "id": "d812e374-1169-4c91-aa90-c72acceeecb2", + "local_images": [{"compatible_commercial_types": ["ARM64-4GB", "ARM64-128GB", + "ARM64-16GB", "ARM64-32GB", "ARM64-8GB", "ARM64-2GB", "ARM64-64GB"], "arch": + "arm64", "id": "b15ddb1a-0611-412e-881a-3aed1b36392b", "zone": "ams1"}, {"compatible_commercial_types": + ["GP1-XS", "DEV1-M", "DEV1-L", "START1-XS", "DEV1-S", "RENDER-S", "GP1-XL", + "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "02906ae8-bf44-4dd0-bd05-6312dd9fa234", + "zone": "par1"}, {"compatible_commercial_types": [], "arch": "arm", "id": "3aa3622c-45d4-4388-9618-cce6974c71a0", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "a5430536-2a51-425d-8613-ef84dae91e27", "zone": "par1"}, {"compatible_commercial_types": + ["X64-120GB", "C2M", "START1-S", "VC1S", "START1-XS", "C2L", "X64-15GB", "C2S", + "X64-30GB", "START1-L", "START1-M", "X64-60GB", "VC1L", "VC1M"], "arch": "x86_64", + "id": "51573d2d-301f-4d24-b0d6-f151728c82f5", "zone": "ams1"}, {"compatible_commercial_types": + ["ARM64-8GB", "ARM64-2GB", "ARM64-32GB", "ARM64-128GB", "ARM64-4GB", "ARM64-64GB", + "ARM64-16GB"], "arch": "arm64", "id": "cac79531-98d5-48fa-aba1-8250214b88a3", + "zone": "par1"}], "name": "2019-03-25T13:06:01.961936"}], "current_public_version": + "d812e374-1169-4c91-aa90-c72acceeecb2", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Fedora + is a powerful, flexible operating system that includes the best and latest datacenter + technologies. It puts you in control of all your infrastructure and services.", + "creation_date": "2018-04-19T10:14:08.648100+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/fedora.png", + "id": "4bff4f37-3ef9-457e-9e8d-4a786cb2a5f2", "categories": ["distribution"], + "name": "Fedora 27", "modification_date": "2019-03-26T14:00:53.140907+00:00", + "versions": [{"creation_date": "2018-09-06T10:51:13.009967+00:00", "modification_date": + "2018-09-06T10:51:13.009967+00:00", "id": "45b5823f-8ddf-4ea8-b106-33d2df127cdf", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "097a100e-fd2f-4918-8a5b-d86de5a489be", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "73f0bcd8-a152-4665-ac09-1b105905a475", + "zone": "ams1"}], "name": "2018-09-06T10:51:13.011044"}], "current_public_version": + "45b5823f-8ddf-4ea8-b106-33d2df127cdf", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "The + CentOS Project is a community-driven free software effort focused on delivering + a robust open source ecosystem.", "creation_date": "2018-04-19T10:12:28.968536+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/centos.png", "id": "98fc244a-ed4c-4523-bd17-b9c4070b8e7e", + "categories": ["distribution"], "name": "CentOS 7.4", "modification_date": "2019-03-26T14:00:53.445597+00:00", + "versions": [{"creation_date": "2018-04-20T13:55:06.824033+00:00", "modification_date": + "2018-04-20T13:55:06.824033+00:00", "id": "31be34e5-074d-4c63-8c77-454459f77c3f", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "ec8b431e-ad39-4523-8b94-f3fa7f3cbd06", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "7220ac63-bac8-484b-9d44-93e3bd01f5a6", + "zone": "ams1"}], "name": "2018-04-20T13:55:06.817954"}], "current_public_version": + "31be34e5-074d-4c63-8c77-454459f77c3f", "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", + "name": "mtouron@ocs.online.net"}}, {"valid_until": null, "description": "Ubuntu + Bionic for Machine Learning 10.1", "creation_date": "2019-03-06T17:24:56.871317+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ubuntu.png", "id": "e0808ca5-1e0a-4070-8aff-d2e49e9600c1", + "categories": ["Machine Learning"], "name": "Ubuntu Bionic ML 10.1", "modification_date": + "2019-03-26T14:00:53.253241+00:00", "versions": [{"creation_date": "2019-03-06T18:03:45.146468+00:00", + "modification_date": "2019-03-06T18:03:45.146468+00:00", "id": "47d58f71-8382-48d1-88cd-75e5f1ed7df6", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "5f96d290-88cb-4262-845e-578d0aa63201", + "zone": "par1"}], "name": "2019-03-06T18:03:45.081159"}], "current_public_version": + "47d58f71-8382-48d1-88cd-75e5f1ed7df6", "organization": {"id": "11111111-1111-4111-8111-111111111111", + "name": "OCS"}}, {"valid_until": null, "description": "Jenkins provides continuous + integration services for software development.", "creation_date": "2016-03-07T21:07:11.211840+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/jenkins.png", "id": "e7db11f0-6630-4def-8e8d-3a1637f052fa", + "categories": ["instantapp"], "name": "Jenkins Master", "modification_date": + "2019-03-26T14:00:53.544277+00:00", "versions": [{"creation_date": "2016-03-07T22:05:34.563042+00:00", + "modification_date": "2016-03-07T22:05:34.563042+00:00", "id": "7e83060b-169e-4d4f-8116-4a657dca2504", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "8c0b0572-fa1d-4601-9a97-87ad0adebf76", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "6b3537ec-6345-4b60-8a29-37136bd783f0", "zone": "ams1"}], + "name": "2015-06-24"}], "current_public_version": "7e83060b-169e-4d4f-8116-4a657dca2504", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ghost is a simple, powerful publishing + platform that allows you to share your stories with the world.", "creation_date": + "2016-03-07T21:06:37.762509+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ghost.png", + "id": "4653d871-5e19-4093-a08d-f3fca34b9ca8", "categories": ["instantapp"], + "name": "Ghost", "modification_date": "2019-03-26T14:00:53.632160+00:00", "versions": + [{"creation_date": "2016-03-17T18:07:22.400548+00:00", "modification_date": + "2016-03-17T18:07:22.400548+00:00", "id": "76921968-deec-4106-a708-91b10dca27de", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "f0ea257d-2883-4ab5-9f58-39e03b4aa4c5", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "7325a77f-bb75-4a39-8cd0-d8af9124fcee", "zone": "ams1"}], + "name": "2016-03-17"}], "current_public_version": "76921968-deec-4106-a708-91b10dca27de", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Ruby on Rails is an open-source web framework + that\u2019s optimized for programmer happiness and sustainable productivity.", + "creation_date": "2016-03-07T21:02:50.887200+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/rails.png", + "id": "29cedfd1-3892-4273-90ba-86a886bdb51e", "categories": ["instantapp"], + "name": "Ruby on Rails", "modification_date": "2019-03-26T14:00:53.919313+00:00", + "versions": [{"creation_date": "2016-03-07T21:53:42.510249+00:00", "modification_date": + "2016-03-07T21:53:42.510249+00:00", "id": "22571268-4fd0-4153-9936-14190ae01a82", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "c5015431-7de1-4c45-9024-dfab244f4a4d", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "1a47e0e0-aaaf-436b-a3fe-a1d22db5c91f", "zone": "ams1"}], + "name": "2015-09-23"}], "current_public_version": "22571268-4fd0-4153-9936-14190ae01a82", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "A dynamic, open source programming language + with a focus on simplicity and productivity.", "creation_date": "2016-03-07T22:15:25.347873+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/ruby.png", "id": "42866fbe-9168-4f77-8271-09beb6049a07", + "categories": ["instantapp"], "name": "Ruby", "modification_date": "2019-03-26T14:00:54.119256+00:00", + "versions": [{"creation_date": "2018-04-18T10:21:49.119857+00:00", "modification_date": + "2018-04-18T10:21:49.119857+00:00", "id": "5b8c935b-5047-43fd-a423-045dae3e0d78", + "local_images": [{"compatible_commercial_types": ["GP1-XS", "DEV1-L", "RENDER-S", + "GP1-XL", "C2S", "X64-15GB", "DEV1-XL", "C2L", "C2M", "VC1S", "START1-S", "X64-30GB", + "GP1-L", "GP1-M", "GP1-S", "START1-L", "START1-M", "VC1L", "VC1M", "X64-120GB", + "X64-60GB"], "arch": "x86_64", "id": "09c71ada-00c6-43de-ad44-c77c5b857a05", + "zone": "par1"}, {"compatible_commercial_types": ["X64-120GB", "C2M", "START1-S", + "VC1S", "C2L", "X64-15GB", "C2S", "X64-30GB", "START1-L", "START1-M", "X64-60GB", + "VC1L", "VC1M"], "arch": "x86_64", "id": "24f2e8ee-80f1-4a8d-83c4-74ed8cd80ed0", + "zone": "ams1"}, {"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "e2479a13-414b-4a0c-ba50-d01e67ee8600", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "f83a03fa-58eb-4b35-bda9-1a42b6d6d90d", "zone": "ams1"}], + "name": "2018-04-18T10:21:49.057120"}], "current_public_version": "5b8c935b-5047-43fd-a423-045dae3e0d78", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "A a PHP-powered, flexible Blogging and + CMS application.", "creation_date": "2016-03-07T21:04:38.314597+00:00", "logo": + "https://marketplace-logos.s3.nl-ams.scw.cloud/serendipity.png", "id": "3eadfd08-5939-4738-b0b6-bdd0bb002e9d", + "categories": ["instantapp"], "name": "Serendipity", "modification_date": "2019-03-26T14:00:54.023188+00:00", + "versions": [{"creation_date": "2016-03-07T21:51:12.030869+00:00", "modification_date": + "2016-03-07T21:51:12.030869+00:00", "id": "7ec2fcf2-ab29-457f-843a-b6efde444704", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "e485269b-fe65-4e78-80fc-a7e349770b95", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "85689a55-e288-40f8-8ae2-7984adb5ed14", "zone": "ams1"}], + "name": "2015-09-30"}], "current_public_version": "7ec2fcf2-ab29-457f-843a-b6efde444704", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Minecraft is a game about placing blocks + to build anything you can imagine.", "creation_date": "2016-03-07T21:02:08.702536+00:00", + "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/minecraft.png", "id": + "aa8b6bc7-61c7-4e7c-a1a2-fd6d60ada433", "categories": ["instantapp"], "name": + "Minecraft", "modification_date": "2019-03-26T14:00:54.225616+00:00", "versions": + [{"creation_date": "2016-03-11T18:06:06.529522+00:00", "modification_date": + "2016-03-11T18:06:06.529522+00:00", "id": "2b401358-027d-4029-b35a-984a25c0dd0f", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "6a60fbef-7f69-488b-9be5-6a25f591989f", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "94382ccf-87be-49c8-b253-0a9b5f00b6c4", "zone": "ams1"}], + "name": "2016-03-11"}], "current_public_version": "2b401358-027d-4029-b35a-984a25c0dd0f", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}, + {"valid_until": null, "description": "Build your own images on Scaleway.", "creation_date": + "2016-03-07T21:03:08.546795+00:00", "logo": "https://marketplace-logos.s3.nl-ams.scw.cloud/default.png", + "id": "67597b1e-89f7-4fb3-98e2-6e199ca60adb", "categories": ["instantapp"], + "name": "Image Builder", "modification_date": "2019-03-26T14:00:54.321504+00:00", + "versions": [{"creation_date": "2016-10-24T16:21:35.520157+00:00", "modification_date": + "2016-10-24T16:21:35.520157+00:00", "id": "3fc393e9-644d-4f52-b044-28b4fecb167b", + "local_images": [{"compatible_commercial_types": ["C1"], "arch": "arm", "id": + "6d536ddb-9ec4-40bb-ab76-c5aa3173be3c", "zone": "par1"}, {"compatible_commercial_types": + [], "arch": "arm", "id": "190e9b6d-5ab4-46c5-9fa5-1bf4e5dafc0e", "zone": "ams1"}], + "name": "2016-10-24"}], "current_public_version": "3fc393e9-644d-4f52-b044-28b4fecb167b", + "organization": {"id": "6d6b64e5-6bad-4cc6-b7ef-2030884c3e11", "name": "mtouron@ocs.online.net"}}]}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "69329" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 May 2019 15:10:06 GMT + Link: + - ; rel="last" + Server: + - scaleway_api + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Total-Count: + - "48" + status: 200 OK + code: 200 + duration: "" diff --git a/go.mod b/go.mod index febab51e..fd2a5db2 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,7 @@ module github.com/scaleway/scaleway-sdk-go go 1.12 -require gopkg.in/yaml.v2 v2.2.2 +require ( + github.com/dnaeon/go-vcr v1.0.1 + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/go.sum b/go.sum index bd555a33..3fd1739f 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,6 @@ +github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/utils/locality.go b/utils/locality.go index 228f1e2c..80f27559 100644 --- a/utils/locality.go +++ b/utils/locality.go @@ -1,5 +1,11 @@ package utils +import ( + "encoding/json" + + "github.com/scaleway/scaleway-sdk-go/logger" +) + // Zone is an availability zone type Zone string @@ -12,6 +18,25 @@ const ( ZoneNlAms1 = Zone("nl-ams-1") ) +var ( + // AllZones is an array that list all zones + AllZones = []Zone{ + ZoneFrPar1, + ZoneFrPar2, + ZoneNlAms1, + } +) + +// Exists checks whether a zone exists +func (zone *Zone) Exists() bool { + for _, z := range AllZones { + if z == *zone { + return true + } + } + return false +} + // Region is a geographical location type Region string @@ -30,9 +55,19 @@ var ( } ) +// Exists checks whether a region exists +func (region *Region) Exists() bool { + for _, r := range AllRegions { + if r == *region { + return true + } + } + return false +} + // GetZones is a function that returns the zones for the specified region -func (r Region) GetZones() []Zone { - switch r { +func (region Region) GetZones() []Zone { + switch region { case RegionFrPar: return []Zone{ZoneFrPar1, ZoneFrPar2} case RegionNlAms: @@ -41,3 +76,80 @@ func (r Region) GetZones() []Zone { return []Zone{} } } + +// ParseZone parse a string value into a Zone object +func ParseZone(zone string) (Zone, error) { + switch zone { + case "par1": + // would be triggered by API market place + // logger.Warningf("par1 is a deprecated name for zone, use fr-par-1 instead") + return ZoneFrPar1, nil + case "ams1": + // would be triggered by API market place + // logger.Warningf("ams1 is a deprecated name for zone, use nl-ams-1 instead") + return ZoneNlAms1, nil + default: + newZone := Zone(zone) + if !newZone.Exists() { + logger.Warningf("%s is an unknown zone", newZone) + } + return newZone, nil + } +} + +// UnmarshalJSON implements the Unmarshaler interface for a Zone. +// this to call ParseZone on the string input and return the correct Zone object. +func (zone *Zone) UnmarshalJSON(input []byte) error { + + // parse input value as string + var stringValue string + err := json.Unmarshal(input, &stringValue) + if err != nil { + return err + } + + // parse string as Zone + *zone, err = ParseZone(stringValue) + if err != nil { + return err + } + return nil +} + +// ParseRegion parse a string value into a Zone object +func ParseRegion(region string) (Region, error) { + switch region { + case "par1": + // would be triggered by API market place + // logger.Warningf("par1 is a deprecated name for region, use fr-par instead") + return RegionFrPar, nil + case "ams1": + // would be triggered by API market place + // logger.Warningf("ams1 is a deprecated name for region, use nl-ams instead") + return RegionNlAms, nil + default: + newRegion := Region(region) + if !newRegion.Exists() { + logger.Warningf("%s is an unknown region", newRegion) + } + return newRegion, nil + } +} + +// UnmarshalJSON implements the Unmarshaler interface for a Region. +// this to call ParseRegion on the string input and return the correct Region object. +func (region *Region) UnmarshalJSON(input []byte) error { + // parse input value as string + var stringValue string + err := json.Unmarshal(input, &stringValue) + if err != nil { + return err + } + + // parse string as Region + *region, err = ParseRegion(stringValue) + if err != nil { + return err + } + return nil +} diff --git a/utils/locality_test.go b/utils/locality_test.go new file mode 100644 index 00000000..89a87f9e --- /dev/null +++ b/utils/locality_test.go @@ -0,0 +1,92 @@ +package utils + +import ( + "encoding/json" + "testing" + + "github.com/scaleway/scaleway-sdk-go/internal/testhelpers" +) + +func TestParseZone(t *testing.T) { + + tests := []struct { + input string + expected Zone + }{ + { + input: "fr-par-1", + expected: ZoneFrPar1, + }, + { + input: "par1", + expected: ZoneFrPar1, + }, + { + input: "ams1", + expected: ZoneNlAms1, + }, + } + + for _, test := range tests { + z, err := ParseZone(test.input) + testhelpers.Ok(t, err) + testhelpers.Equals(t, test.expected, z) + } + +} + +func TestZoneJSONUnmarshall(t *testing.T) { + + t.Run("test with zone", func(t *testing.T) { + + input := `{"Test": "par1"}` + value := struct{ Test Zone }{} + + err := json.Unmarshal([]byte(input), &value) + testhelpers.Ok(t, err) + + testhelpers.Equals(t, ZoneFrPar1, value.Test) + + }) + + t.Run("test with region", func(t *testing.T) { + + input := `{"Test": "par1"}` + value := struct{ Test Region }{} + + err := json.Unmarshal([]byte(input), &value) + testhelpers.Ok(t, err) + + testhelpers.Equals(t, RegionFrPar, value.Test) + + }) + +} + +func TestParseRegion(t *testing.T) { + + tests := []struct { + input string + expected Region + }{ + { + input: "fr-par", + expected: RegionFrPar, + }, + { + input: "par1", + expected: RegionFrPar, + }, + { + input: "ams1", + expected: RegionNlAms, + }, + } + + for _, test := range tests { + r, err := ParseRegion(test.input) + testhelpers.Ok(t, err) + testhelpers.Equals(t, test.expected, r) + } + +} diff --git a/vendor/github.com/dnaeon/go-vcr/LICENSE b/vendor/github.com/dnaeon/go-vcr/LICENSE new file mode 100644 index 00000000..9a461320 --- /dev/null +++ b/vendor/github.com/dnaeon/go-vcr/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2015-2016 Marin Atanasov Nikolov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer + in this position and unchanged. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/dnaeon/go-vcr/cassette/cassette.go b/vendor/github.com/dnaeon/go-vcr/cassette/cassette.go new file mode 100644 index 00000000..cf9e340d --- /dev/null +++ b/vendor/github.com/dnaeon/go-vcr/cassette/cassette.go @@ -0,0 +1,227 @@ +// Copyright (c) 2015 Marin Atanasov Nikolov +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer +// in this position and unchanged. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package cassette + +import ( + "errors" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "os" + "path/filepath" + "sync" + + "gopkg.in/yaml.v2" +) + +// Cassette format versions +const ( + cassetteFormatV1 = 1 +) + +var ( + // ErrInteractionNotFound indicates that a requested + // interaction was not found in the cassette file + ErrInteractionNotFound = errors.New("Requested interaction not found") +) + +// Request represents a client request as recorded in the +// cassette file +type Request struct { + // Body of request + Body string `yaml:"body"` + + // Form values + Form url.Values `yaml:"form"` + + // Request headers + Headers http.Header `yaml:"headers"` + + // Request URL + URL string `yaml:"url"` + + // Request method + Method string `yaml:"method"` +} + +// Response represents a server response as recorded in the +// cassette file +type Response struct { + // Body of response + Body string `yaml:"body"` + + // Response headers + Headers http.Header `yaml:"headers"` + + // Response status message + Status string `yaml:"status"` + + // Response status code + Code int `yaml:"code"` + + // Response duration (something like "100ms" or "10s") + Duration string `yaml:"duration"` + + replayed bool +} + +// Interaction type contains a pair of request/response for a +// single HTTP interaction between a client and a server +type Interaction struct { + Request `yaml:"request"` + Response `yaml:"response"` +} + +// Matcher function returns true when the actual request matches +// a single HTTP interaction's request according to the function's +// own criteria. +type Matcher func(*http.Request, Request) bool + +// DefaultMatcher is used when a custom matcher is not defined +// and compares only the method and URL. +func DefaultMatcher(r *http.Request, i Request) bool { + return r.Method == i.Method && r.URL.String() == i.URL +} + +// Filter function allows modification of an interaction before saving. +type Filter func(*Interaction) error + +// Cassette type +type Cassette struct { + // Name of the cassette + Name string `yaml:"-"` + + // File name of the cassette as written on disk + File string `yaml:"-"` + + // Cassette format version + Version int `yaml:"version"` + + // Mutex to lock accessing Interactions. omitempty is set + // to prevent the mutex appearing in the recorded YAML. + Mu sync.RWMutex `yaml:"mu,omitempty"` + // Interactions between client and server + Interactions []*Interaction `yaml:"interactions"` + + // Matches actual request with interaction requests. + Matcher Matcher `yaml:"-"` + + // Filters interactions before being saved. + Filters []Filter `yaml:"-"` +} + +// New creates a new empty cassette +func New(name string) *Cassette { + c := &Cassette{ + Name: name, + File: fmt.Sprintf("%s.yaml", name), + Version: cassetteFormatV1, + Interactions: make([]*Interaction, 0), + Matcher: DefaultMatcher, + Filters: make([]Filter, 0), + } + + return c +} + +// Load reads a cassette file from disk +func Load(name string) (*Cassette, error) { + c := New(name) + data, err := ioutil.ReadFile(c.File) + if err != nil { + return nil, err + } + + err = yaml.Unmarshal(data, &c) + + return c, err +} + +// AddInteraction appends a new interaction to the cassette +func (c *Cassette) AddInteraction(i *Interaction) { + c.Mu.Lock() + c.Interactions = append(c.Interactions, i) + c.Mu.Unlock() +} + +// GetInteraction retrieves a recorded request/response interaction +func (c *Cassette) GetInteraction(r *http.Request) (*Interaction, error) { + c.Mu.Lock() + defer c.Mu.Unlock() + for _, i := range c.Interactions { + if !i.replayed && c.Matcher(r, i.Request) { + i.replayed = true + return i, nil + } + } + + return nil, ErrInteractionNotFound +} + +// Save writes the cassette data on disk for future re-use +func (c *Cassette) Save() error { + c.Mu.RLock() + defer c.Mu.RUnlock() + // Save cassette file only if there were any interactions made + if len(c.Interactions) == 0 { + return nil + } + + // Create directory for cassette if missing + cassetteDir := filepath.Dir(c.File) + if _, err := os.Stat(cassetteDir); os.IsNotExist(err) { + if err = os.MkdirAll(cassetteDir, 0755); err != nil { + return err + } + } + + // Marshal to YAML and save interactions + data, err := yaml.Marshal(c) + if err != nil { + return err + } + + f, err := os.Create(c.File) + if err != nil { + return err + } + + defer f.Close() + + // Honor the YAML structure specification + // http://www.yaml.org/spec/1.2/spec.html#id2760395 + _, err = f.Write([]byte("---\n")) + if err != nil { + return err + } + + _, err = f.Write(data) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/dnaeon/go-vcr/recorder/go17_nobody.go b/vendor/github.com/dnaeon/go-vcr/recorder/go17_nobody.go new file mode 100644 index 00000000..465961ab --- /dev/null +++ b/vendor/github.com/dnaeon/go-vcr/recorder/go17_nobody.go @@ -0,0 +1,37 @@ +// Copyright (c) 2015-2016 Marin Atanasov Nikolov +// Copyright (c) 2016 David Jack +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer +// in this position and unchanged. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// +build !go1.8 + +package recorder + +import ( + "io" +) + +// isNoBody returns true iff r is an http.NoBody. +// http.NoBody didn't exist before Go 1.7, so the version in this file +// always returns false. +func isNoBody(r io.ReadCloser) bool { return false } diff --git a/vendor/github.com/dnaeon/go-vcr/recorder/go18_nobody.go b/vendor/github.com/dnaeon/go-vcr/recorder/go18_nobody.go new file mode 100644 index 00000000..dac213af --- /dev/null +++ b/vendor/github.com/dnaeon/go-vcr/recorder/go18_nobody.go @@ -0,0 +1,36 @@ +// Copyright (c) 2015-2016 Marin Atanasov Nikolov +// Copyright (c) 2016 David Jack +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer +// in this position and unchanged. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// +build go1.8 + +package recorder + +import ( + "io" + "net/http" +) + +// isNoBody returns true iff r is an http.NoBody. +func isNoBody(r io.ReadCloser) bool { return r == http.NoBody } diff --git a/vendor/github.com/dnaeon/go-vcr/recorder/recorder.go b/vendor/github.com/dnaeon/go-vcr/recorder/recorder.go new file mode 100644 index 00000000..2b889195 --- /dev/null +++ b/vendor/github.com/dnaeon/go-vcr/recorder/recorder.go @@ -0,0 +1,275 @@ +// Copyright (c) 2015-2016 Marin Atanasov Nikolov +// Copyright (c) 2016 David Jack +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer +// in this position and unchanged. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package recorder + +import ( + "bufio" + "bytes" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/http/httputil" + "os" + "strconv" + "time" + + "github.com/dnaeon/go-vcr/cassette" +) + +// Mode represents recording/playback mode +type Mode int + +// Recorder states +const ( + ModeRecording Mode = iota + ModeReplaying + ModeDisabled +) + +// Recorder represents a type used to record and replay +// client and server interactions +type Recorder struct { + // Operating mode of the recorder + mode Mode + + // Cassette used by the recorder + cassette *cassette.Cassette + + // realTransport is the underlying http.RoundTripper to make real requests + realTransport http.RoundTripper +} + +// SetTransport can be used to configure the behavior of the 'real' client used in record-mode +func (r *Recorder) SetTransport(t http.RoundTripper) { + r.realTransport = t +} + +// Proxies client requests to their original destination +func requestHandler(r *http.Request, c *cassette.Cassette, mode Mode, realTransport http.RoundTripper) (*cassette.Interaction, error) { + // Return interaction from cassette if in replay mode + if mode == ModeReplaying { + if err := r.Context().Err(); err != nil { + return nil, err + } + return c.GetInteraction(r) + } + + // Copy the original request, so we can read the form values + reqBytes, err := httputil.DumpRequestOut(r, true) + if err != nil { + return nil, err + } + + reqBuffer := bytes.NewBuffer(reqBytes) + copiedReq, err := http.ReadRequest(bufio.NewReader(reqBuffer)) + if err != nil { + return nil, err + } + + err = copiedReq.ParseForm() + if err != nil { + return nil, err + } + + reqBody := &bytes.Buffer{} + if r.Body != nil && !isNoBody(r.Body) { + // Record the request body so we can add it to the cassette + r.Body = ioutil.NopCloser(io.TeeReader(r.Body, reqBody)) + } + + // Perform client request to it's original + // destination and record interactions + resp, err := realTransport.RoundTrip(r) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + // Add interaction to cassette + interaction := &cassette.Interaction{ + Request: cassette.Request{ + Body: reqBody.String(), + Form: copiedReq.PostForm, + Headers: r.Header, + URL: r.URL.String(), + Method: r.Method, + }, + Response: cassette.Response{ + Body: string(respBody), + Headers: resp.Header, + Status: resp.Status, + Code: resp.StatusCode, + }, + } + for _, filter := range c.Filters { + err = filter(interaction) + if err != nil { + return nil, err + } + } + c.AddInteraction(interaction) + + return interaction, nil +} + +// New creates a new recorder +func New(cassetteName string) (*Recorder, error) { + // Default mode is "replay" if file exists + return NewAsMode(cassetteName, ModeReplaying, nil) +} + +// NewAsMode creates a new recorder in the specified mode +func NewAsMode(cassetteName string, mode Mode, realTransport http.RoundTripper) (*Recorder, error) { + var c *cassette.Cassette + cassetteFile := fmt.Sprintf("%s.yaml", cassetteName) + + if mode != ModeDisabled { + // Depending on whether the cassette file exists or not we + // either create a new empty cassette or load from file + if _, err := os.Stat(cassetteFile); os.IsNotExist(err) || mode == ModeRecording { + // Create new cassette and enter in recording mode + c = cassette.New(cassetteName) + mode = ModeRecording + } else { + // Load cassette from file and enter replay mode + c, err = cassette.Load(cassetteName) + if err != nil { + return nil, err + } + mode = ModeReplaying + } + } + + if realTransport == nil { + realTransport = http.DefaultTransport + } + + r := &Recorder{ + mode: mode, + cassette: c, + realTransport: realTransport, + } + + return r, nil +} + +// Stop is used to stop the recorder and save any recorded interactions +func (r *Recorder) Stop() error { + if r.mode == ModeRecording { + if err := r.cassette.Save(); err != nil { + return err + } + } + + return nil +} + +// RoundTrip implements the http.RoundTripper interface +func (r *Recorder) RoundTrip(req *http.Request) (*http.Response, error) { + if r.mode == ModeDisabled { + return r.realTransport.RoundTrip(req) + } + // Pass cassette and mode to handler, so that interactions can be + // retrieved or recorded depending on the current recorder mode + interaction, err := requestHandler(req, r.cassette, r.mode, r.realTransport) + + if err != nil { + return nil, err + } + + select { + case <-req.Context().Done(): + return nil, req.Context().Err() + default: + buf := bytes.NewBuffer([]byte(interaction.Response.Body)) + // apply the duration defined in the interaction + if interaction.Response.Duration != "" { + d, err := time.ParseDuration(interaction.Duration) + if err != nil { + return nil, err + } + // block for the configured 'duration' to simulate the network latency and server processing time. + <-time.After(d) + } + + contentLength := int64(buf.Len()) + // For HTTP HEAD requests, the ContentLength should be set to the size + // of the body that would have been sent for a GET. + // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13 + if req.Method == "HEAD" { + if hdr := interaction.Response.Headers.Get("Content-Length"); hdr != "" { + cl, err := strconv.ParseInt(hdr, 10, 64) + if err == nil { + contentLength = cl + } + } + } + return &http.Response{ + Status: interaction.Response.Status, + StatusCode: interaction.Response.Code, + Proto: "HTTP/1.0", + ProtoMajor: 1, + ProtoMinor: 0, + Request: req, + Header: interaction.Response.Headers, + Close: true, + ContentLength: contentLength, + Body: ioutil.NopCloser(buf), + }, nil + } +} + +// CancelRequest implements the github.com/coreos/etcd/client.CancelableTransport interface +func (r *Recorder) CancelRequest(req *http.Request) { + type cancelableTransport interface { + CancelRequest(req *http.Request) + } + if ct, ok := r.realTransport.(cancelableTransport); ok { + ct.CancelRequest(req) + } +} + +// SetMatcher sets a function to match requests against recorded HTTP interactions. +func (r *Recorder) SetMatcher(matcher cassette.Matcher) { + if r.cassette != nil { + r.cassette.Matcher = matcher + } +} + +// AddFilter appends a hook to modify a request before it is recorded. +// +// Filters are useful for filtering out sensitive parameters from the recorded data. +func (r *Recorder) AddFilter(filter cassette.Filter) { + if r.cassette != nil { + r.cassette.Filters = append(r.cassette.Filters, filter) + } +} diff --git a/vendor/modules.txt b/vendor/modules.txt index f5db0d31..910b610d 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,2 +1,5 @@ +# github.com/dnaeon/go-vcr v1.0.1 +github.com/dnaeon/go-vcr/recorder +github.com/dnaeon/go-vcr/cassette # gopkg.in/yaml.v2 v2.2.2 gopkg.in/yaml.v2