Skip to content

Commit 011bb95

Browse files
committed
test: Update gce cloudmock
1 parent caaf1cc commit 011bb95

File tree

4 files changed

+41
-20
lines changed

4 files changed

+41
-20
lines changed

cloudmock/gce/mock_gce_cloud.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ func (c *MockGCECloud) AllResources() map[string]interface{} {
7070
return c.computeClient.AllResources()
7171
}
7272

73-
// GetCloudGroups is not implemented yet
7473
func (c *MockGCECloud) GetCloudGroups(cluster *kops.Cluster, instancegroups []*kops.InstanceGroup, options *fi.GetCloudGroupsOptions, nodes []v1.Node) (map[string]*cloudinstances.CloudInstanceGroup, error) {
7574
return gce.GetCloudGroups(c, cluster, instancegroups, options, nodes)
7675
}
@@ -167,8 +166,7 @@ func (c *MockGCECloud) Labels() map[string]string {
167166

168167
// DeleteGroup implements fi.Cloud::DeleteGroup
169168
func (c *MockGCECloud) DeleteGroup(g *cloudinstances.CloudInstanceGroup) error {
170-
return nil
171-
// return deleteCloudInstanceGroup(c, g)
169+
return gce.DeleteCloudInstanceGroup(c, g)
172170
}
173171

174172
// DeleteInstance deletes a GCE instance

cloudmock/gce/mockcompute/api.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ var _ gce.ComputeClient = &MockClient{}
5050

5151
// NewMockClient creates a new mock client.
5252
func NewMockClient(project string) *MockClient {
53+
instanceClient := newInstanceClient()
54+
5355
return &MockClient{
5456
projectClient: newProjectClient(project),
5557
zoneClient: newZoneClient(project),
@@ -66,8 +68,8 @@ func NewMockClient(project string) *MockClient {
6668
routerClient: newRouterClient(),
6769

6870
instanceTemplateClient: newInstanceTemplateClient(),
69-
instanceGroupManagerClient: newInstanceGroupManagerClient(),
70-
instanceClient: newInstanceClient(),
71+
instanceGroupManagerClient: newInstanceGroupManagerClient(instanceClient),
72+
instanceClient: instanceClient,
7173
targetPoolClient: newTargetPoolClient(),
7274

7375
diskClient: newDiskClient(),

cloudmock/gce/mockcompute/instance.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,29 @@ func (c *instanceClient) Insert(project, zone string, instance *compute.Instance
5656
instances = map[string]*compute.Instance{}
5757
zones[zone] = instances
5858
}
59-
instance.SelfLink = fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/instances/%s", project, zone, instance.Name)
59+
instance.SelfLink = instance.Name
6060
instances[instance.Name] = instance
6161

6262
return doneOperation(), nil
6363
}
6464

6565
func (c *instanceClient) Delete(project, zone, name string) (*compute.Operation, error) {
66-
return nil, fmt.Errorf("delete unimplemented")
66+
c.Lock()
67+
defer c.Unlock()
68+
69+
zones, ok := c.instances[project]
70+
if !ok {
71+
return nil, notFoundError()
72+
}
73+
instances, ok := zones[zone]
74+
if !ok {
75+
return nil, notFoundError()
76+
}
77+
if _, ok := instances[name]; !ok {
78+
return nil, notFoundError()
79+
}
80+
delete(instances, name)
81+
return doneOperation(), nil
6782
}
6883

6984
func (c *instanceClient) Get(project, zone, name string) (*compute.Instance, error) {

cloudmock/gce/mockcompute/instance_group_manager.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,20 @@ import (
2828
type instanceGroupManagerClient struct {
2929
// instanceGroupManagers are instanceGroupManagers keyed by project, zone, and name.
3030
instanceGroupManagers map[string]map[string]map[string]*compute.InstanceGroupManager
31-
// instances are instances keyed by project, zone, and name.
32-
instances map[string]map[string]map[string]*compute.ManagedInstance
31+
// managedInstances are managedInstances keyed by project, zone, and name.
32+
managedInstances map[string]map[string]map[string]*compute.ManagedInstance
33+
// instanceClient is the client for instances.
34+
instanceClient gce.InstanceClient
3335
sync.Mutex
3436
}
3537

3638
var _ gce.InstanceGroupManagerClient = &instanceGroupManagerClient{}
3739

38-
func newInstanceGroupManagerClient() *instanceGroupManagerClient {
40+
func newInstanceGroupManagerClient(instanceClient gce.InstanceClient) *instanceGroupManagerClient {
3941
return &instanceGroupManagerClient{
4042
instanceGroupManagers: map[string]map[string]map[string]*compute.InstanceGroupManager{},
41-
instances: map[string]map[string]map[string]*compute.ManagedInstance{},
43+
managedInstances: map[string]map[string]map[string]*compute.ManagedInstance{},
44+
instanceClient: instanceClient,
4245
}
4346
}
4447

@@ -72,22 +75,25 @@ func (c *instanceGroupManagerClient) Insert(project, zone string, igm *compute.I
7275
igm.SelfLink = fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/instanceGroupManagers/%s", project, zone, igm.Name)
7376
igms[igm.Name] = igm
7477

75-
newInstance := &compute.ManagedInstance{
76-
Instance: fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/instances/%s", project, zone, igm.Name),
78+
newInstance := &compute.Instance{
79+
Name: igm.Name,
7780
}
7881

79-
instanceZones, ok := c.instances[project]
82+
c.instanceClient.Insert(project, zone, newInstance)
83+
84+
instanceZones, ok := c.managedInstances[project]
8085
if !ok {
8186
instanceZones = map[string]map[string]*compute.ManagedInstance{}
82-
c.instances[project] = instanceZones
87+
c.managedInstances[project] = instanceZones
8388
}
84-
instanceIgms, ok := instanceZones[zone]
89+
_, ok = instanceZones[zone]
8590
if !ok {
86-
instanceIgms = map[string]*compute.ManagedInstance{}
87-
instanceZones[zone] = instanceIgms
91+
instanceZones[zone] = map[string]*compute.ManagedInstance{}
8892
}
8993

90-
c.instances[project][zone][igm.Name] = newInstance
94+
c.managedInstances[project][zone][igm.Name] = &compute.ManagedInstance{
95+
Instance: fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/instances/%s", project, zone, igm.Name),
96+
}
9197

9298
return doneOperation(), nil
9399
}
@@ -150,7 +156,7 @@ func (c *instanceGroupManagerClient) ListManagedInstances(ctx context.Context, p
150156
c.Lock()
151157
defer c.Unlock()
152158

153-
zones, ok := c.instances[project]
159+
zones, ok := c.managedInstances[project]
154160
if !ok {
155161
return nil, nil
156162
}

0 commit comments

Comments
 (0)