mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-05-02 14:26:23 -04:00
This reverts commit effb086cd3
.
This commit is contained in:
parent
37e21b2ff0
commit
be1deb7d4b
7 changed files with 113 additions and 94 deletions
|
@ -29,7 +29,6 @@ go_library(
|
||||||
"@com_github_spf13_afero//:afero",
|
"@com_github_spf13_afero//:afero",
|
||||||
"@com_google_cloud_go_compute//apiv1",
|
"@com_google_cloud_go_compute//apiv1",
|
||||||
"@com_google_cloud_go_compute//apiv1/computepb",
|
"@com_google_cloud_go_compute//apiv1/computepb",
|
||||||
"@org_golang_google_api//compute/v1:compute",
|
|
||||||
"@org_golang_google_api//googleapi",
|
"@org_golang_google_api//googleapi",
|
||||||
"@org_golang_google_api//iterator",
|
"@org_golang_google_api//iterator",
|
||||||
"@org_golang_google_protobuf//proto",
|
"@org_golang_google_protobuf//proto",
|
||||||
|
@ -62,7 +61,6 @@ go_test(
|
||||||
"@com_github_stretchr_testify//require",
|
"@com_github_stretchr_testify//require",
|
||||||
"@com_google_cloud_go_compute//apiv1",
|
"@com_google_cloud_go_compute//apiv1",
|
||||||
"@com_google_cloud_go_compute//apiv1/computepb",
|
"@com_google_cloud_go_compute//apiv1/computepb",
|
||||||
"@org_golang_google_api//compute/v1:compute",
|
|
||||||
"@org_golang_google_api//googleapi",
|
"@org_golang_google_api//googleapi",
|
||||||
"@org_golang_google_api//iterator",
|
"@org_golang_google_api//iterator",
|
||||||
"@org_golang_google_protobuf//proto",
|
"@org_golang_google_protobuf//proto",
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
compute "cloud.google.com/go/compute/apiv1"
|
compute "cloud.google.com/go/compute/apiv1"
|
||||||
"cloud.google.com/go/compute/apiv1/computepb"
|
"cloud.google.com/go/compute/apiv1/computepb"
|
||||||
"github.com/googleapis/gax-go/v2"
|
"github.com/googleapis/gax-go/v2"
|
||||||
computeREST "google.golang.org/api/compute/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type projectAPI interface {
|
type projectAPI interface {
|
||||||
|
@ -28,9 +27,13 @@ type instanceAPI interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type instanceTemplateAPI interface {
|
type instanceTemplateAPI interface {
|
||||||
Get(projectID, template string) (*computeREST.InstanceTemplate, error)
|
Close() error
|
||||||
Delete(projectID, template string) (*computeREST.Operation, error)
|
Get(ctx context.Context, req *computepb.GetInstanceTemplateRequest,
|
||||||
Insert(projectID string, template *computeREST.InstanceTemplate) (*computeREST.Operation, error)
|
opts ...gax.CallOption) (*computepb.InstanceTemplate, error)
|
||||||
|
Delete(ctx context.Context, req *computepb.DeleteInstanceTemplateRequest,
|
||||||
|
opts ...gax.CallOption) (Operation, error)
|
||||||
|
Insert(ctx context.Context, req *computepb.InsertInstanceTemplateRequest,
|
||||||
|
opts ...gax.CallOption) (Operation, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type instanceGroupManagersAPI interface {
|
type instanceGroupManagersAPI interface {
|
||||||
|
|
|
@ -14,7 +14,6 @@ import (
|
||||||
|
|
||||||
compute "cloud.google.com/go/compute/apiv1"
|
compute "cloud.google.com/go/compute/apiv1"
|
||||||
"github.com/spf13/afero"
|
"github.com/spf13/afero"
|
||||||
computeREST "google.golang.org/api/compute/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client is a client for the Google Compute Engine.
|
// Client is a client for the Google Compute Engine.
|
||||||
|
@ -49,17 +48,12 @@ func New(ctx context.Context, configPath string) (*Client, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
closers = append(closers, insAPI)
|
closers = append(closers, insAPI)
|
||||||
|
templAPI, err := compute.NewInstanceTemplatesRESTClient(ctx)
|
||||||
// TODO(msanft): Go back to protobuf-based API when it supports setting
|
|
||||||
// a confidential instance type.
|
|
||||||
// See https://github.com/googleapis/google-cloud-go/issues/10873 for the current status.
|
|
||||||
restClient, err := computeREST.NewService(ctx)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = closeAll(closers)
|
_ = closeAll(closers)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
templAPI := computeREST.NewInstanceTemplatesService(restClient)
|
closers = append(closers, templAPI)
|
||||||
|
|
||||||
groupAPI, err := compute.NewInstanceGroupManagersRESTClient(ctx)
|
groupAPI, err := compute.NewInstanceGroupManagersRESTClient(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = closeAll(closers)
|
_ = closeAll(closers)
|
||||||
|
@ -87,6 +81,7 @@ func (c *Client) Close() error {
|
||||||
closers := []closer{
|
closers := []closer{
|
||||||
c.projectAPI,
|
c.projectAPI,
|
||||||
c.instanceAPI,
|
c.instanceAPI,
|
||||||
|
c.instanceTemplateAPI,
|
||||||
c.instanceGroupManagersAPI,
|
c.instanceGroupManagersAPI,
|
||||||
c.diskAPI,
|
c.diskAPI,
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
compute "cloud.google.com/go/compute/apiv1"
|
compute "cloud.google.com/go/compute/apiv1"
|
||||||
"cloud.google.com/go/compute/apiv1/computepb"
|
"cloud.google.com/go/compute/apiv1/computepb"
|
||||||
"github.com/googleapis/gax-go/v2"
|
"github.com/googleapis/gax-go/v2"
|
||||||
computeREST "google.golang.org/api/compute/v1"
|
|
||||||
"google.golang.org/api/iterator"
|
"google.golang.org/api/iterator"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
@ -48,7 +47,7 @@ func (a stubInstanceAPI) Get(_ context.Context, _ *computepb.GetInstanceRequest,
|
||||||
}
|
}
|
||||||
|
|
||||||
type stubInstanceTemplateAPI struct {
|
type stubInstanceTemplateAPI struct {
|
||||||
template *computeREST.InstanceTemplate
|
template *computepb.InstanceTemplate
|
||||||
getErr error
|
getErr error
|
||||||
deleteErr error
|
deleteErr error
|
||||||
insertErr error
|
insertErr error
|
||||||
|
@ -58,16 +57,30 @@ func (a stubInstanceTemplateAPI) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a stubInstanceTemplateAPI) Get(_, _ string) (*computeREST.InstanceTemplate, error) {
|
func (a stubInstanceTemplateAPI) Get(_ context.Context, _ *computepb.GetInstanceTemplateRequest,
|
||||||
|
_ ...gax.CallOption,
|
||||||
|
) (*computepb.InstanceTemplate, error) {
|
||||||
return a.template, a.getErr
|
return a.template, a.getErr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a stubInstanceTemplateAPI) Delete(_, _ string) (*computeREST.Operation, error) {
|
func (a stubInstanceTemplateAPI) Delete(_ context.Context, _ *computepb.DeleteInstanceTemplateRequest,
|
||||||
return &computeREST.Operation{}, a.deleteErr
|
_ ...gax.CallOption,
|
||||||
|
) (Operation, error) {
|
||||||
|
return &stubOperation{
|
||||||
|
&computepb.Operation{
|
||||||
|
Name: proto.String("name"),
|
||||||
|
},
|
||||||
|
}, a.deleteErr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a stubInstanceTemplateAPI) Insert(_ string, _ *computeREST.InstanceTemplate) (*computeREST.Operation, error) {
|
func (a stubInstanceTemplateAPI) Insert(_ context.Context, _ *computepb.InsertInstanceTemplateRequest,
|
||||||
return &computeREST.Operation{}, a.insertErr
|
_ ...gax.CallOption,
|
||||||
|
) (Operation, error) {
|
||||||
|
return &stubOperation{
|
||||||
|
&computepb.Operation{
|
||||||
|
Name: proto.String("name"),
|
||||||
|
},
|
||||||
|
}, a.insertErr
|
||||||
}
|
}
|
||||||
|
|
||||||
type stubInstanceGroupManagersAPI struct {
|
type stubInstanceGroupManagersAPI struct {
|
||||||
|
|
|
@ -12,27 +12,26 @@ import (
|
||||||
compute "cloud.google.com/go/compute/apiv1"
|
compute "cloud.google.com/go/compute/apiv1"
|
||||||
"cloud.google.com/go/compute/apiv1/computepb"
|
"cloud.google.com/go/compute/apiv1/computepb"
|
||||||
"github.com/googleapis/gax-go/v2"
|
"github.com/googleapis/gax-go/v2"
|
||||||
computeREST "google.golang.org/api/compute/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type instanceTemplateClient struct {
|
type instanceTemplateClient struct {
|
||||||
*computeREST.InstanceTemplatesService
|
*compute.InstanceTemplatesClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *instanceTemplateClient) Close() error {
|
func (c *instanceTemplateClient) Close() error {
|
||||||
return nil // no-op
|
return c.InstanceTemplatesClient.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *instanceTemplateClient) Get(project, template string) (*computeREST.InstanceTemplate, error) {
|
func (c *instanceTemplateClient) Delete(ctx context.Context, req *computepb.DeleteInstanceTemplateRequest,
|
||||||
return c.InstanceTemplatesService.Get(project, template).Do()
|
opts ...gax.CallOption,
|
||||||
|
) (Operation, error) {
|
||||||
|
return c.InstanceTemplatesClient.Delete(ctx, req, opts...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *instanceTemplateClient) Delete(project, template string) (*computeREST.Operation, error) {
|
func (c *instanceTemplateClient) Insert(ctx context.Context, req *computepb.InsertInstanceTemplateRequest,
|
||||||
return c.InstanceTemplatesService.Delete(project, template).Do()
|
opts ...gax.CallOption,
|
||||||
}
|
) (Operation, error) {
|
||||||
|
return c.InstanceTemplatesClient.Insert(ctx, req, opts...)
|
||||||
func (c *instanceTemplateClient) Insert(projectID string, template *computeREST.InstanceTemplate) (*computeREST.Operation, error) {
|
|
||||||
return c.InstanceTemplatesService.Insert(projectID, template).Do()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type instanceGroupManagersClient struct {
|
type instanceGroupManagersClient struct {
|
||||||
|
|
|
@ -16,7 +16,6 @@ import (
|
||||||
"github.com/edgelesssys/constellation/v2/internal/constants"
|
"github.com/edgelesssys/constellation/v2/internal/constants"
|
||||||
updatev1alpha1 "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/api/v1alpha1"
|
updatev1alpha1 "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/api/v1alpha1"
|
||||||
cspapi "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/internal/cloud/api"
|
cspapi "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/internal/cloud/api"
|
||||||
computeREST "google.golang.org/api/compute/v1"
|
|
||||||
"google.golang.org/api/iterator"
|
"google.golang.org/api/iterator"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -50,22 +49,29 @@ func (c *Client) SetScalingGroupImage(ctx context.Context, scalingGroupID, image
|
||||||
}
|
}
|
||||||
|
|
||||||
// clone template with desired image
|
// clone template with desired image
|
||||||
if instanceTemplate.Name == "" {
|
if instanceTemplate.Name == nil {
|
||||||
return fmt.Errorf("instance template of scaling group %q has no name", scalingGroupID)
|
return fmt.Errorf("instance template of scaling group %q has no name", scalingGroupID)
|
||||||
}
|
}
|
||||||
instanceTemplate.Properties.Disks[0].InitializeParams.SourceImage = imageURI
|
instanceTemplate.Properties.Disks[0].InitializeParams.SourceImage = &imageURI
|
||||||
newTemplateName, err := generateInstanceTemplateName(instanceTemplate.Name)
|
newTemplateName, err := generateInstanceTemplateName(*instanceTemplate.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
instanceTemplate.Name = newTemplateName
|
instanceTemplate.Name = &newTemplateName
|
||||||
if _, err := c.instanceTemplateAPI.Insert(project, instanceTemplate); err != nil {
|
op, err := c.instanceTemplateAPI.Insert(ctx, &computepb.InsertInstanceTemplateRequest{
|
||||||
|
Project: project,
|
||||||
|
InstanceTemplateResource: instanceTemplate,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
return fmt.Errorf("cloning instance template: %w", err)
|
return fmt.Errorf("cloning instance template: %w", err)
|
||||||
}
|
}
|
||||||
|
if err := op.Wait(ctx); err != nil {
|
||||||
|
return fmt.Errorf("waiting for cloned instance template: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
newTemplateURI := joinInstanceTemplateURI(project, newTemplateName)
|
newTemplateURI := joinInstanceTemplateURI(project, newTemplateName)
|
||||||
// update instance group manager to use new template
|
// update instance group manager to use new template
|
||||||
op, err := c.instanceGroupManagersAPI.SetInstanceTemplate(ctx, &computepb.SetInstanceTemplateInstanceGroupManagerRequest{
|
op, err = c.instanceGroupManagersAPI.SetInstanceTemplate(ctx, &computepb.SetInstanceTemplateInstanceGroupManagerRequest{
|
||||||
InstanceGroupManager: instanceGroupName,
|
InstanceGroupManager: instanceGroupName,
|
||||||
Project: project,
|
Project: project,
|
||||||
Zone: zone,
|
Zone: zone,
|
||||||
|
@ -129,7 +135,10 @@ func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.Sc
|
||||||
if len(templateURI) < 1 {
|
if len(templateURI) < 1 {
|
||||||
continue // invalid template URI
|
continue // invalid template URI
|
||||||
}
|
}
|
||||||
template, err := c.instanceTemplateAPI.Get(c.projectID, templateURI[len(templateURI)-1])
|
template, err := c.instanceTemplateAPI.Get(ctx, &computepb.GetInstanceTemplateRequest{
|
||||||
|
Project: c.projectID,
|
||||||
|
InstanceTemplate: templateURI[len(templateURI)-1],
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
retErr = errors.Join(retErr, fmt.Errorf("getting instance template %q: %w", templateURI[len(templateURI)-1], err))
|
retErr = errors.Join(retErr, fmt.Errorf("getting instance template %q: %w", templateURI[len(templateURI)-1], err))
|
||||||
continue
|
continue
|
||||||
|
@ -190,7 +199,7 @@ func (c *Client) ListScalingGroups(ctx context.Context, uid string) ([]cspapi.Sc
|
||||||
return results, nil
|
return results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) getScalingGroupTemplate(ctx context.Context, scalingGroupID string) (*computeREST.InstanceTemplate, error) {
|
func (c *Client) getScalingGroupTemplate(ctx context.Context, scalingGroupID string) (*computepb.InstanceTemplate, error) {
|
||||||
project, zone, instanceGroupName, err := splitInstanceGroupID(scalingGroupID)
|
project, zone, instanceGroupName, err := splitInstanceGroupID(scalingGroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -210,19 +219,22 @@ func (c *Client) getScalingGroupTemplate(ctx context.Context, scalingGroupID str
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("splitting instance template name: %w", err)
|
return nil, fmt.Errorf("splitting instance template name: %w", err)
|
||||||
}
|
}
|
||||||
instanceTemplate, err := c.instanceTemplateAPI.Get(instanceTemplateProject, instanceTemplateName)
|
instanceTemplate, err := c.instanceTemplateAPI.Get(ctx, &computepb.GetInstanceTemplateRequest{
|
||||||
|
InstanceTemplate: instanceTemplateName,
|
||||||
|
Project: instanceTemplateProject,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("getting instance template %q: %w", instanceTemplateName, err)
|
return nil, fmt.Errorf("getting instance template %q: %w", instanceTemplateName, err)
|
||||||
}
|
}
|
||||||
return instanceTemplate, nil
|
return instanceTemplate, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func instanceTemplateSourceImage(instanceTemplate *computeREST.InstanceTemplate) (string, error) {
|
func instanceTemplateSourceImage(instanceTemplate *computepb.InstanceTemplate) (string, error) {
|
||||||
if instanceTemplate.Properties == nil ||
|
if instanceTemplate.Properties == nil ||
|
||||||
len(instanceTemplate.Properties.Disks) == 0 ||
|
len(instanceTemplate.Properties.Disks) == 0 ||
|
||||||
instanceTemplate.Properties.Disks[0].InitializeParams == nil ||
|
instanceTemplate.Properties.Disks[0].InitializeParams == nil ||
|
||||||
instanceTemplate.Properties.Disks[0].InitializeParams.SourceImage == "" {
|
instanceTemplate.Properties.Disks[0].InitializeParams.SourceImage == nil {
|
||||||
return "", errors.New("instance template has no source image")
|
return "", errors.New("instance template has no source image")
|
||||||
}
|
}
|
||||||
return uriNormalize(instanceTemplate.Properties.Disks[0].InitializeParams.SourceImage), nil
|
return uriNormalize(*instanceTemplate.Properties.Disks[0].InitializeParams.SourceImage), nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ import (
|
||||||
cspapi "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/internal/cloud/api"
|
cspapi "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/internal/cloud/api"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
computeREST "google.golang.org/api/compute/v1"
|
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -24,7 +23,7 @@ func TestGetScalingGroupImage(t *testing.T) {
|
||||||
testCases := map[string]struct {
|
testCases := map[string]struct {
|
||||||
scalingGroupID string
|
scalingGroupID string
|
||||||
instanceGroupManagerTemplateID *string
|
instanceGroupManagerTemplateID *string
|
||||||
instanceTemplate *computeREST.InstanceTemplate
|
instanceTemplate *computepb.InstanceTemplate
|
||||||
getInstanceGroupManagerErr error
|
getInstanceGroupManagerErr error
|
||||||
getInstanceTemplateErr error
|
getInstanceTemplateErr error
|
||||||
wantImage string
|
wantImage string
|
||||||
|
@ -33,12 +32,12 @@ func TestGetScalingGroupImage(t *testing.T) {
|
||||||
"getting image works": {
|
"getting image works": {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -73,8 +72,8 @@ func TestGetScalingGroupImage(t *testing.T) {
|
||||||
"instance template has no disks": {
|
"instance template has no disks": {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Properties: &computeREST.InstanceProperties{},
|
Properties: &computepb.InstanceProperties{},
|
||||||
},
|
},
|
||||||
wantErr: true,
|
wantErr: true,
|
||||||
},
|
},
|
||||||
|
@ -113,7 +112,7 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID string
|
scalingGroupID string
|
||||||
imageURI string
|
imageURI string
|
||||||
instanceGroupManagerTemplateID *string
|
instanceGroupManagerTemplateID *string
|
||||||
instanceTemplate *computeREST.InstanceTemplate
|
instanceTemplate *computepb.InstanceTemplate
|
||||||
getInstanceGroupManagerErr error
|
getInstanceGroupManagerErr error
|
||||||
getInstanceTemplateErr error
|
getInstanceTemplateErr error
|
||||||
setInstanceTemplateErr error
|
setInstanceTemplateErr error
|
||||||
|
@ -124,13 +123,13 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
imageURI: "projects/project/global/images/image-2",
|
imageURI: "projects/project/global/images/image-2",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Name: "instance-template",
|
Name: proto.String("instance-template"),
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image-1",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image-1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -141,13 +140,13 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
imageURI: "projects/project/global/images/image",
|
imageURI: "projects/project/global/images/image",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Name: "instance-template",
|
Name: proto.String("instance-template"),
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -183,8 +182,8 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
"instance template has no disks": {
|
"instance template has no disks": {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Properties: &computeREST.InstanceProperties{},
|
Properties: &computepb.InstanceProperties{},
|
||||||
},
|
},
|
||||||
wantErr: true,
|
wantErr: true,
|
||||||
},
|
},
|
||||||
|
@ -192,12 +191,12 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
imageURI: "projects/project/global/images/image-2",
|
imageURI: "projects/project/global/images/image-2",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image-1",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image-1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -209,13 +208,13 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
imageURI: "projects/project/global/images/image-2",
|
imageURI: "projects/project/global/images/image-2",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Name: "instance-template-999999999999999999999",
|
Name: proto.String("instance-template-999999999999999999999"),
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image-1",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image-1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -227,13 +226,13 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
imageURI: "projects/project/global/images/image-2",
|
imageURI: "projects/project/global/images/image-2",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Name: "instance-template",
|
Name: proto.String("instance-template"),
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image-1",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image-1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -246,13 +245,13 @@ func TestSetScalingGroupImage(t *testing.T) {
|
||||||
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
scalingGroupID: "projects/project/zones/zone/instanceGroupManagers/instance-group",
|
||||||
imageURI: "projects/project/global/images/image-2",
|
imageURI: "projects/project/global/images/image-2",
|
||||||
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
instanceGroupManagerTemplateID: proto.String("projects/project/global/instanceTemplates/instance-template"),
|
||||||
instanceTemplate: &computeREST.InstanceTemplate{
|
instanceTemplate: &computepb.InstanceTemplate{
|
||||||
Name: "instance-template",
|
Name: proto.String("instance-template"),
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Disks: []*computeREST.AttachedDisk{
|
Disks: []*computepb.AttachedDisk{
|
||||||
{
|
{
|
||||||
InitializeParams: &computeREST.AttachedDiskInitializeParams{
|
InitializeParams: &computepb.AttachedDiskInitializeParams{
|
||||||
SourceImage: "https://www.googleapis.com/compute/v1/projects/project/global/images/image-1",
|
SourceImage: proto.String("https://www.googleapis.com/compute/v1/projects/project/global/images/image-1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -449,8 +448,8 @@ func TestListScalingGroups(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
instanceTemplateAPI: &stubInstanceTemplateAPI{
|
instanceTemplateAPI: &stubInstanceTemplateAPI{
|
||||||
template: &computeREST.InstanceTemplate{
|
template: &computepb.InstanceTemplate{
|
||||||
Properties: &computeREST.InstanceProperties{
|
Properties: &computepb.InstanceProperties{
|
||||||
Labels: tc.templateLabels,
|
Labels: tc.templateLabels,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue