Skip to content

Commit

Permalink
Add OVHcloud's minimal templates (#858)
Browse files Browse the repository at this point in the history
  • Loading branch information
scraly authored Dec 4, 2024
1 parent b29aad9 commit 580a929
Show file tree
Hide file tree
Showing 18 changed files with 645 additions and 0 deletions.
15 changes: 15 additions & 0 deletions ovh-csharp/${PROJECT}.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Pulumi" Version="3.*" />
<PackageReference Include="Pulumi.Ovh" Version="1.*" />
</ItemGroup>

</Project>

52 changes: 52 additions & 0 deletions ovh-csharp/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Ovh = Pulumi.Ovh;
using System;

return await Deployment.RunAsync(() =>
{
// Get some configuration values (or use defaults)
var config = new Pulumi.Config();
var ovhServiceName = config.Require("ovhServiceName");
var ovhRegion = config.Get("ovhRegion") ?? "GRA";
var planName = config.Get("planName") ?? "SMALL";
var registryName = config.Get("registryName") ?? "my-registry";

var registryUserName = config.Get("registryUserName") ?? "user";
var registryUserEmail = config.Get("registryUserEmail") ?? "[email protected]";
var registryUserLogin = config.Get("registryUserLogin") ?? "myuser";

// Initiate the configuration of the registry
var regcap = Ovh.CloudProject.GetCapabilitiesContainerFilter.Invoke(new()
{
ServiceName = ovhServiceName,
PlanName = planName,
Region = ovhRegion,
});

// Deploy a new Managed private registry
var myRegistry = new Ovh.CloudProject.ContainerRegistry(registryName, new()
{
ServiceName = regcap.Apply(getCapabilitiesContainerFilterResult => getCapabilitiesContainerFilterResult.ServiceName),
PlanId = regcap.Apply(getCapabilitiesContainerFilterResult => getCapabilitiesContainerFilterResult.Id),
Region = regcap.Apply(getCapabilitiesContainerFilterResult => getCapabilitiesContainerFilterResult.Region),
});

// Create a Private Registry User
var myRegistryUser = new Ovh.CloudProject.ContainerRegistryUser(registryUserName, new()
{
ServiceName = ovhServiceName,
RegistryId = myRegistry.Id,
Email = registryUserEmail,
Login = registryUserLogin,
});

// Export some values for use elsewhere
return new Dictionary<string, object?>
{
["registryURL"] = myRegistry.Url,
["registryUser"] = myRegistryUser.User,
["registryPassword"] = myRegistryUser.Password,
};
});
26 changes: 26 additions & 0 deletions ovh-csharp/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: ${PROJECT}
description: ${DESCRIPTION}
runtime: dotnet
template:
description: A minimal OVHcloud C# Pulumi program
config:
ovhServiceName:
description: The OVHcloud Public Cloud Project to deploy into
ovhRegion:
default: GRA
description: The OVHcloud region to deploy into
planName:
default: SMALL
description: Name of the plan
registryName:
default: my-registry
description: Name of the private registry
registryUserName:
default: user
description: Name of the user
registryUserEmail:
default: [email protected]
description: Email of the user
registryUserLogin:
default: myuser
description: Login of the user
26 changes: 26 additions & 0 deletions ovh-go/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: ${PROJECT}
description: ${DESCRIPTION}
runtime: go
template:
description: A minimal OVHcloud Go Pulumi program
config:
ovhServiceName:
description: The OVHcloud Public Cloud Project to deploy into
ovhRegion:
default: GRA
description: The OVHcloud region to deploy into
planName:
default: SMALL
description: Name of the plan
registryName:
default: my-registry
description: Name of the private registry
registryUserName:
default: user
description: Name of the user
registryUserEmail:
default: [email protected]
description: Email of the user
registryUserLogin:
default: myuser
description: Login of the user
93 changes: 93 additions & 0 deletions ovh-go/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
module kubernetes-ovh-go

go 1.22

require (
github.com/ovh/pulumi-ovh/sdk v1.1.0
github.com/pulumi/pulumi/sdk/v3 v3.137.0
)

require (
dario.cat/mergo v1.0.0 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/ProtonMail/go-crypto v1.0.0 // indirect
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/charmbracelet/bubbles v0.16.1 // indirect
github.com/charmbracelet/bubbletea v0.25.0 // indirect
github.com/charmbracelet/lipgloss v0.7.1 // indirect
github.com/cheggaaa/pb v1.0.29 // indirect
github.com/cloudflare/circl v1.3.7 // indirect
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
github.com/djherbis/times v1.5.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect
github.com/go-git/go-git/v5 v5.12.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.2.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/hcl/v2 v2.17.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mitchellh/go-ps v1.0.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/opentracing/basictracer-go v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pgavlin/fx v0.1.6 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/term v1.1.0 // indirect
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
github.com/pulumi/esc v0.9.1 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
github.com/skeema/knownhosts v1.2.2 // indirect
github.com/spf13/cast v1.4.1 // indirect
github.com/spf13/cobra v1.7.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/zclconf/go-cty v1.13.2 // indirect
go.uber.org/atomic v1.9.0 // indirect
golang.org/x/crypto v0.24.0 // indirect
golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect
golang.org/x/mod v0.18.0 // indirect
golang.org/x/net v0.26.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.21.0 // indirect
golang.org/x/term v0.21.0 // indirect
golang.org/x/text v0.16.0 // indirect
golang.org/x/tools v0.22.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/grpc v1.63.2 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/frand v1.4.2 // indirect
)

82 changes: 82 additions & 0 deletions ovh-go/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package main

import (
"github.com/ovh/pulumi-ovh/sdk/go/ovh/cloudproject"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)

func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Get some configuration values or use defaults
cfg := config.New(ctx, "")
ovhServiceName := cfg.Require("ovhServiceName")
ovhRegion, err := cfg.Try("ovhRegion")
if err != nil {
ovhRegion = "GRA"
}

planName, err := cfg.Try("planName")
if err != nil {
planName = "SMALL"
}

registryName, err := cfg.Try("registryName")
if err != nil {
registryName = "my-registry"
}

registryUserName, err := cfg.Try("registryUserName")
if err != nil {
registryUserName = "user"
}

registryUserEmail, err := cfg.Try("registryUserEmail")
if err != nil {
registryUserEmail = "[email protected]"
}

registryUserLogin, err := cfg.Try("registryUserLogin")
if err != nil {
registryUserLogin = "myuser"
}

// Initiate the configuration of the registry
regcap, err := cloudproject.GetCapabilitiesContainerFilter(ctx, &cloudproject.GetCapabilitiesContainerFilterArgs{
ServiceName: ovhServiceName,
PlanName: planName,
Region: ovhRegion,
}, nil)
if err != nil {
return err
}

// Deploy a new Managed private registry
myRegistry, err := cloudproject.NewContainerRegistry(ctx, registryName, &cloudproject.ContainerRegistryArgs{
ServiceName: pulumi.String(regcap.ServiceName),
PlanId: pulumi.String(regcap.Id),
Region: pulumi.String(regcap.Region),
})
if err != nil {
return err
}

// Create a Private Registry User
myRegistryUser, err := cloudproject.NewContainerRegistryUser(ctx, registryUserName, &cloudproject.ContainerRegistryUserArgs{
ServiceName: pulumi.String(regcap.ServiceName),
RegistryId: myRegistry.ID(),
Email: pulumi.String(registryUserEmail),
Login: pulumi.String(registryUserLogin),
})
if err != nil {
return err
}

// Add as an output registry information
ctx.Export("registryURL", myRegistry.Url)
ctx.Export("registryUser", myRegistryUser.User)
ctx.Export("registryPassword", myRegistryUser.Password)

return nil
})
}
26 changes: 26 additions & 0 deletions ovh-java/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: ${PROJECT}
description: ${DESCRIPTION}
runtime: java
template:
description: A minimal OVHcloud Java Pulumi program
config:
ovhServiceName:
description: The OVHcloud Public Cloud Project to deploy into
ovhRegion:
default: GRA
description: The OVHcloud region to deploy into
planName:
default: SMALL
description: Name of the plan
registryName:
default: my-registry
description: Name of the private registry
registryUserName:
default: user
description: Name of the user
registryUserEmail:
default: [email protected]
description: Email of the user
registryUserLogin:
default: myuser
description: Login of the user
Loading

0 comments on commit 580a929

Please sign in to comment.