mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-12-14 23:49:38 -05:00
Move cli/cloud/cloudtypes into /internal
This commit is contained in:
parent
c3ebd3d3cd
commit
b308db03fe
26 changed files with 27 additions and 21 deletions
|
|
@ -5,11 +5,11 @@ import (
|
|||
"errors"
|
||||
"strconv"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
azurecl "github.com/edgelesssys/constellation/cli/internal/azure/client"
|
||||
gcpcl "github.com/edgelesssys/constellation/cli/internal/gcp/client"
|
||||
"github.com/edgelesssys/constellation/internal/azureshared"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/gcpshared"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
azurecl "github.com/edgelesssys/constellation/cli/internal/azure/client"
|
||||
"github.com/edgelesssys/constellation/cli/internal/gcp"
|
||||
gcpcl "github.com/edgelesssys/constellation/cli/internal/gcp/client"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/config"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/config"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/config"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,131 +0,0 @@
|
|||
package cloudtypes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
||||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
|
||||
"github.com/edgelesssys/constellation/internal/config"
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
type FirewallRule = config.FirewallRule
|
||||
|
||||
type Firewall config.Firewall
|
||||
|
||||
func (f Firewall) GCP() ([]*computepb.Firewall, error) {
|
||||
var fw []*computepb.Firewall
|
||||
for _, rule := range f {
|
||||
var srcRange []string
|
||||
if rule.IPRange != "" {
|
||||
srcRange = []string{rule.IPRange}
|
||||
}
|
||||
|
||||
var ports []string
|
||||
if rule.FromPort != 0 || rule.ToPort != 0 {
|
||||
port, err := portOrRange(rule.FromPort, rule.ToPort)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ports = []string{port}
|
||||
}
|
||||
|
||||
fw = append(fw, &computepb.Firewall{
|
||||
Allowed: []*computepb.Allowed{
|
||||
{
|
||||
IPProtocol: proto.String(rule.Protocol),
|
||||
Ports: ports,
|
||||
},
|
||||
},
|
||||
Description: proto.String(rule.Description),
|
||||
SourceRanges: srcRange,
|
||||
Name: proto.String(rule.Name),
|
||||
})
|
||||
}
|
||||
return fw, nil
|
||||
}
|
||||
|
||||
func (f Firewall) Azure() ([]*armnetwork.SecurityRule, error) {
|
||||
var fw []*armnetwork.SecurityRule
|
||||
for i, rule := range f {
|
||||
// format string according to armnetwork.SecurityRuleProtocol specification
|
||||
protocol := cases.Title(language.English).String(rule.Protocol)
|
||||
|
||||
dstPortRange, err := portOrRange(rule.FromPort, rule.ToPort)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
fw = append(fw, &armnetwork.SecurityRule{
|
||||
Name: proto.String(rule.Name),
|
||||
Properties: &armnetwork.SecurityRulePropertiesFormat{
|
||||
Description: proto.String(rule.Description),
|
||||
Protocol: (*armnetwork.SecurityRuleProtocol)(proto.String(protocol)),
|
||||
SourceAddressPrefix: proto.String(rule.IPRange),
|
||||
SourcePortRange: proto.String("*"),
|
||||
DestinationAddressPrefix: proto.String(rule.IPRange),
|
||||
DestinationPortRange: proto.String(dstPortRange),
|
||||
Access: armnetwork.SecurityRuleAccessAllow.ToPtr(),
|
||||
Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(),
|
||||
// Each security role needs a unique priority
|
||||
Priority: proto.Int32(int32(100 * (i + 1))),
|
||||
},
|
||||
})
|
||||
}
|
||||
return fw, nil
|
||||
}
|
||||
|
||||
func (f Firewall) AWS() []ec2types.IpPermission {
|
||||
var fw []ec2types.IpPermission
|
||||
for _, rule := range f {
|
||||
fw = append(fw, ec2types.IpPermission{
|
||||
FromPort: proto.Int32(int32(rule.FromPort)),
|
||||
ToPort: proto.Int32(int32(rule.ToPort)),
|
||||
IpProtocol: proto.String(rule.Protocol),
|
||||
IpRanges: []ec2types.IpRange{
|
||||
{
|
||||
CidrIp: proto.String(rule.IPRange),
|
||||
Description: proto.String(rule.Description),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
return fw
|
||||
}
|
||||
|
||||
const (
|
||||
MinPort = 0
|
||||
MaxPort = 65535
|
||||
)
|
||||
|
||||
// PortOutOfRangeError occurs when either FromPort or ToPort are out of range
|
||||
// of [MinPort-MaxPort].
|
||||
type PortOutOfRangeError struct {
|
||||
FromPort int
|
||||
ToPort int
|
||||
}
|
||||
|
||||
func (p *PortOutOfRangeError) Error() string {
|
||||
return fmt.Sprintf(
|
||||
"[%d-%d] not in allowed port range of [%d-%d]",
|
||||
p.FromPort, p.ToPort, MinPort, MaxPort,
|
||||
)
|
||||
}
|
||||
|
||||
// portOrRange returns "fromPort" as single port, if toPort is zero.
|
||||
// If toPort is >0 a port range of form "fromPort-toPort".
|
||||
// If either value is negative PortOutOfRangeError is returned.
|
||||
func portOrRange(fromPort, toPort int) (string, error) {
|
||||
if fromPort < MinPort || toPort < MinPort || fromPort > MaxPort || toPort > MaxPort {
|
||||
return "", &PortOutOfRangeError{FromPort: fromPort, ToPort: toPort}
|
||||
}
|
||||
if toPort == MinPort || fromPort == toPort {
|
||||
return fmt.Sprintf("%d", fromPort), nil
|
||||
}
|
||||
if toPort > MinPort {
|
||||
return fmt.Sprintf("%d-%d", fromPort, toPort), nil
|
||||
}
|
||||
return "", &PortOutOfRangeError{FromPort: fromPort, ToPort: toPort}
|
||||
}
|
||||
|
|
@ -1,275 +0,0 @@
|
|||
package cloudtypes
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
||||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
func TestFirewallGCP(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
require := require.New(t)
|
||||
testFw := Firewall{
|
||||
{
|
||||
Name: "test-1",
|
||||
Description: "This is the Test-1 Permission",
|
||||
Protocol: "tcp",
|
||||
IPRange: "",
|
||||
FromPort: 9000,
|
||||
},
|
||||
{
|
||||
Name: "test-2",
|
||||
Description: "This is the Test-2 Permission",
|
||||
Protocol: "udp",
|
||||
IPRange: "",
|
||||
FromPort: 51820,
|
||||
},
|
||||
{
|
||||
Name: "test-3",
|
||||
Description: "This is the Test-3 Permission",
|
||||
Protocol: "tcp",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 4000,
|
||||
},
|
||||
}
|
||||
|
||||
firewalls, err := testFw.GCP()
|
||||
assert.NoError(err)
|
||||
assert.Equal(len(testFw), len(firewalls))
|
||||
|
||||
// Check permissions
|
||||
for i := 0; i < len(testFw); i++ {
|
||||
firewall1 := firewalls[i]
|
||||
actualPermission1 := firewall1.Allowed[0]
|
||||
|
||||
actualPort, err := strconv.Atoi(actualPermission1.GetPorts()[0])
|
||||
require.NoError(err)
|
||||
assert.Equal(testFw[i].FromPort, actualPort)
|
||||
assert.Equal(testFw[i].Protocol, actualPermission1.GetIPProtocol())
|
||||
|
||||
assert.Equal(testFw[i].Name, firewall1.GetName())
|
||||
assert.Equal(testFw[i].Description, firewall1.GetDescription())
|
||||
|
||||
if testFw[i].IPRange != "" {
|
||||
require.Len(firewall1.GetSourceRanges(), 1)
|
||||
assert.Equal(testFw[i].IPRange, firewall1.GetSourceRanges()[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestFirewallAzure(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
input := Firewall{
|
||||
{
|
||||
Name: "perm1",
|
||||
Description: "perm1 description",
|
||||
Protocol: "TCP",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 22,
|
||||
},
|
||||
{
|
||||
Name: "perm2",
|
||||
Description: "perm2 description",
|
||||
Protocol: "udp",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 4433,
|
||||
},
|
||||
{
|
||||
Name: "perm3",
|
||||
Description: "perm3 description",
|
||||
Protocol: "tcp",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 4433,
|
||||
},
|
||||
}
|
||||
wantOutput := []*armnetwork.SecurityRule{
|
||||
{
|
||||
Name: proto.String("perm1"),
|
||||
Properties: &armnetwork.SecurityRulePropertiesFormat{
|
||||
Description: proto.String("perm1 description"),
|
||||
Protocol: armnetwork.SecurityRuleProtocolTCP.ToPtr(),
|
||||
SourceAddressPrefix: proto.String("192.0.2.0/24"),
|
||||
SourcePortRange: proto.String("*"),
|
||||
DestinationAddressPrefix: proto.String("192.0.2.0/24"),
|
||||
DestinationPortRange: proto.String("22"),
|
||||
Access: armnetwork.SecurityRuleAccessAllow.ToPtr(),
|
||||
Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(),
|
||||
Priority: proto.Int32(100),
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: proto.String("perm2"),
|
||||
Properties: &armnetwork.SecurityRulePropertiesFormat{
|
||||
Description: proto.String("perm2 description"),
|
||||
Protocol: armnetwork.SecurityRuleProtocolUDP.ToPtr(),
|
||||
SourceAddressPrefix: proto.String("192.0.2.0/24"),
|
||||
SourcePortRange: proto.String("*"),
|
||||
DestinationAddressPrefix: proto.String("192.0.2.0/24"),
|
||||
DestinationPortRange: proto.String("4433"),
|
||||
Access: armnetwork.SecurityRuleAccessAllow.ToPtr(),
|
||||
Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(),
|
||||
Priority: proto.Int32(200),
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: proto.String("perm3"),
|
||||
Properties: &armnetwork.SecurityRulePropertiesFormat{
|
||||
Description: proto.String("perm3 description"),
|
||||
Protocol: armnetwork.SecurityRuleProtocolTCP.ToPtr(),
|
||||
SourceAddressPrefix: proto.String("192.0.2.0/24"),
|
||||
SourcePortRange: proto.String("*"),
|
||||
DestinationAddressPrefix: proto.String("192.0.2.0/24"),
|
||||
DestinationPortRange: proto.String("4433"),
|
||||
Access: armnetwork.SecurityRuleAccessAllow.ToPtr(),
|
||||
Direction: armnetwork.SecurityRuleDirectionInbound.ToPtr(),
|
||||
Priority: proto.Int32(300),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
out, err := input.Azure()
|
||||
assert.NoError(err)
|
||||
assert.Equal(wantOutput, out)
|
||||
}
|
||||
|
||||
func TestIPPermissonsToAWS(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
input := Firewall{
|
||||
{
|
||||
Description: "perm1",
|
||||
Protocol: "TCP",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 22,
|
||||
ToPort: 22,
|
||||
},
|
||||
{
|
||||
Description: "perm2",
|
||||
Protocol: "UDP",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 4433,
|
||||
ToPort: 4433,
|
||||
},
|
||||
{
|
||||
Description: "perm3",
|
||||
Protocol: "TCP",
|
||||
IPRange: "192.0.2.0/24",
|
||||
FromPort: 4433,
|
||||
ToPort: 4433,
|
||||
},
|
||||
}
|
||||
wantOutput := []ec2types.IpPermission{
|
||||
{
|
||||
FromPort: proto.Int32(int32(22)),
|
||||
ToPort: proto.Int32(int32(22)),
|
||||
IpProtocol: proto.String("TCP"),
|
||||
IpRanges: []ec2types.IpRange{
|
||||
{
|
||||
CidrIp: proto.String("192.0.2.0/24"),
|
||||
Description: proto.String("perm1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
FromPort: proto.Int32(int32(4433)),
|
||||
ToPort: proto.Int32(int32(4433)),
|
||||
IpProtocol: proto.String("UDP"),
|
||||
IpRanges: []ec2types.IpRange{
|
||||
{
|
||||
CidrIp: proto.String("192.0.2.0/24"),
|
||||
Description: proto.String("perm2"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
FromPort: proto.Int32(int32(4433)),
|
||||
ToPort: proto.Int32(int32(4433)),
|
||||
IpProtocol: proto.String("TCP"),
|
||||
IpRanges: []ec2types.IpRange{
|
||||
{
|
||||
CidrIp: proto.String("192.0.2.0/24"),
|
||||
Description: proto.String("perm3"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
out := input.AWS()
|
||||
assert.Equal(wantOutput, out)
|
||||
}
|
||||
|
||||
func TestPortOrRange(t *testing.T) {
|
||||
testCases := map[string]struct {
|
||||
fromPort int
|
||||
toPort int
|
||||
result string
|
||||
wantErr bool
|
||||
}{
|
||||
"ssh": {
|
||||
fromPort: 22,
|
||||
result: "22",
|
||||
},
|
||||
"https": {
|
||||
fromPort: 443,
|
||||
result: "443",
|
||||
},
|
||||
"nodePorts": {
|
||||
fromPort: 30000,
|
||||
toPort: 32767,
|
||||
result: "30000-32767",
|
||||
},
|
||||
"negative fromPort": {
|
||||
fromPort: -1,
|
||||
wantErr: true,
|
||||
},
|
||||
"negative toPort": {
|
||||
toPort: -1,
|
||||
wantErr: true,
|
||||
},
|
||||
"same value no range": {
|
||||
fromPort: 22,
|
||||
toPort: 22,
|
||||
result: "22",
|
||||
},
|
||||
"from zero to ssh": {
|
||||
toPort: 22,
|
||||
result: "0-22",
|
||||
},
|
||||
"from max": {
|
||||
fromPort: MaxPort,
|
||||
result: "65535",
|
||||
},
|
||||
"from max+1": {
|
||||
fromPort: MaxPort + 1,
|
||||
wantErr: true,
|
||||
},
|
||||
"to max": {
|
||||
toPort: MaxPort,
|
||||
result: "0-65535",
|
||||
},
|
||||
"to max+1": {
|
||||
toPort: MaxPort + 1,
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range testCases {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
got, err := portOrRange(tc.fromPort, tc.toPort)
|
||||
if tc.wantErr {
|
||||
assert.Error(err)
|
||||
return
|
||||
}
|
||||
assert.NoError(err)
|
||||
assert.Equal(tc.result, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
package cloudtypes
|
||||
|
||||
import "errors"
|
||||
|
||||
// Instance is a gcp instance.
|
||||
type Instance struct {
|
||||
PublicIP string
|
||||
PrivateIP string
|
||||
}
|
||||
|
||||
// Instances is a map of gcp Instances. The ID of an instance is used as key.
|
||||
type Instances map[string]Instance
|
||||
|
||||
// IDs returns the IDs of all instances of the Constellation.
|
||||
func (i Instances) IDs() []string {
|
||||
var ids []string
|
||||
for id := range i {
|
||||
ids = append(ids, id)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
||||
// PublicIPs returns the public IPs of all the instances of the Constellation.
|
||||
func (i Instances) PublicIPs() []string {
|
||||
var ips []string
|
||||
for _, instance := range i {
|
||||
ips = append(ips, instance.PublicIP)
|
||||
}
|
||||
return ips
|
||||
}
|
||||
|
||||
// PrivateIPs returns the private IPs of all the instances of the Constellation.
|
||||
func (i Instances) PrivateIPs() []string {
|
||||
var ips []string
|
||||
for _, instance := range i {
|
||||
ips = append(ips, instance.PrivateIP)
|
||||
}
|
||||
return ips
|
||||
}
|
||||
|
||||
// GetOne return anyone instance out of the instances and its ID.
|
||||
func (i Instances) GetOne() (string, Instance, error) {
|
||||
for id, instance := range i {
|
||||
return id, instance, nil
|
||||
}
|
||||
return "", Instance{}, errors.New("map is empty")
|
||||
}
|
||||
|
||||
// GetOthers returns all instances but the one with the handed ID.
|
||||
func (i Instances) GetOthers(id string) Instances {
|
||||
others := make(Instances)
|
||||
for key, instance := range i {
|
||||
if key != id {
|
||||
others[key] = instance
|
||||
}
|
||||
}
|
||||
return others
|
||||
}
|
||||
|
||||
// ScalingGroup is a group of instances, with an identifying group ID.
|
||||
type ScalingGroup struct {
|
||||
Instances
|
||||
GroupID string
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
package cloudtypes
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestIDs(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
testState := testInstances()
|
||||
wantIDs := []string{"id-9", "id-10", "id-11", "id-12"}
|
||||
assert.ElementsMatch(wantIDs, testState.IDs())
|
||||
}
|
||||
|
||||
func TestPublicIPs(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
testState := testInstances()
|
||||
wantIPs := []string{"192.0.2.1", "192.0.2.3", "192.0.2.5", "192.0.2.7"}
|
||||
assert.ElementsMatch(wantIPs, testState.PublicIPs())
|
||||
}
|
||||
|
||||
func TestPrivateIPs(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
testState := testInstances()
|
||||
wantIPs := []string{"192.0.2.2", "192.0.2.4", "192.0.2.6", "192.0.2.8"}
|
||||
assert.ElementsMatch(wantIPs, testState.PrivateIPs())
|
||||
}
|
||||
|
||||
func TestGetOne(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
testState := testInstances()
|
||||
id, instance, err := testState.GetOne()
|
||||
assert.NoError(err)
|
||||
assert.Contains(testState, id)
|
||||
assert.Equal(testState[id], instance)
|
||||
}
|
||||
|
||||
func TestGetOthers(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
testCases := testInstances().IDs()
|
||||
|
||||
for _, id := range testCases {
|
||||
others := testInstances().GetOthers(id)
|
||||
assert.NotContains(others, id)
|
||||
wantInstances := testInstances()
|
||||
delete(wantInstances, id)
|
||||
assert.ElementsMatch(others.IDs(), wantInstances.IDs())
|
||||
}
|
||||
}
|
||||
|
||||
func testInstances() Instances {
|
||||
return Instances{
|
||||
"id-9": {
|
||||
PublicIP: "192.0.2.1",
|
||||
PrivateIP: "192.0.2.2",
|
||||
},
|
||||
"id-10": {
|
||||
PublicIP: "192.0.2.3",
|
||||
PrivateIP: "192.0.2.4",
|
||||
},
|
||||
"id-11": {
|
||||
PublicIP: "192.0.2.5",
|
||||
PrivateIP: "192.0.2.6",
|
||||
},
|
||||
"id-12": {
|
||||
PublicIP: "192.0.2.7",
|
||||
PrivateIP: "192.0.2.8",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -15,8 +15,8 @@ import (
|
|||
"github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac"
|
||||
"github.com/Azure/go-autorest/autorest"
|
||||
"github.com/Azure/go-autorest/autorest/azure/auth"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ package client
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/cli/internal/azure"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
)
|
||||
|
||||
func (c *Client) CreateInstances(ctx context.Context, input CreateInstancesInput) error {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import (
|
|||
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
||||
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/cli/internal/azure"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
)
|
||||
|
||||
type createNetworkInput struct {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ import (
|
|||
"text/tabwriter"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudcmd"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/cli/internal/azure"
|
||||
"github.com/edgelesssys/constellation/cli/internal/gcp"
|
||||
"github.com/edgelesssys/constellation/cli/internal/proto"
|
||||
|
|
@ -23,6 +22,7 @@ import (
|
|||
coordinatorstate "github.com/edgelesssys/constellation/coordinator/state"
|
||||
"github.com/edgelesssys/constellation/coordinator/util"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/config"
|
||||
"github.com/edgelesssys/constellation/internal/constants"
|
||||
"github.com/edgelesssys/constellation/internal/deploy/ssh"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/constants"
|
||||
"github.com/edgelesssys/constellation/internal/file"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ import (
|
|||
compute "cloud.google.com/go/compute/apiv1"
|
||||
admin "cloud.google.com/go/iam/admin/apiv1"
|
||||
resourcemanager "cloud.google.com/go/resourcemanager/apiv3"
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudprovider"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/state"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/coordinator/role"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"google.golang.org/api/iterator"
|
||||
computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/stretchr/testify/assert"
|
||||
computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import (
|
|||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/edgelesssys/constellation/cli/cloud/cloudtypes"
|
||||
"github.com/edgelesssys/constellation/internal/cloud/cloudtypes"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue