Skip to content

Commit 22fafab

Browse files
authored
add support hybrid cluster (#25)
Signed-off-by: Alexey Sulimenko <alexey.sulimenko@flant.com>
1 parent 112eaff commit 22fafab

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

driver/controller.go

+10-13
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,9 @@ const (
6969
zoneTopologyKey = "failure-domain.beta.kubernetes.io/zone"
7070
)
7171

72-
var (
73-
supportedAccessMode = &csi.VolumeCapability_AccessMode{
74-
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
75-
}
76-
)
72+
var supportedAccessMode = &csi.VolumeCapability_AccessMode{
73+
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
74+
}
7775

7876
// CreateVolume creates a new volume from the given request. The function is
7977
// idempotent.
@@ -102,14 +100,13 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
102100
return nil, status.Errorf(codes.OutOfRange, "invalid capacity range: %v", err)
103101
}
104102

105-
var zone = d.zone
103+
zone := d.zone
104+
region := d.region
106105
if req.AccessibilityRequirements != nil {
107106
for _, t := range req.AccessibilityRequirements.Requisite {
108-
region, ok := t.Segments[regionTopologyKey]
107+
regionStr, ok := t.Segments[regionTopologyKey]
109108
if ok {
110-
if region != d.region {
111-
return nil, status.Errorf(codes.ResourceExhausted, "volume can be only created in region: %q, got: %q", d.region, region)
112-
}
109+
region = regionStr
113110
}
114111

115112
zoneStr, ok := t.Segments[zoneTopologyKey]
@@ -126,7 +123,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
126123
"storage_size_gibibytes": size / giB,
127124
"method": "create_volume",
128125
"volume_capabilities": req.VolumeCapabilities,
129-
"region": d.region,
126+
"region": region,
130127
"zone": zone,
131128
})
132129
log.Info("create volume called")
@@ -160,7 +157,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
160157
AccessibleTopology: []*csi.Topology{
161158
{
162159
Segments: map[string]string{
163-
regionTopologyKey: d.region,
160+
regionTopologyKey: region,
164161
zoneTopologyKey: vol.ZoneId,
165162
},
166163
},
@@ -197,7 +194,7 @@ func (d *Driver) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest)
197194
AccessibleTopology: []*csi.Topology{
198195
{
199196
Segments: map[string]string{
200-
regionTopologyKey: d.region,
197+
regionTopologyKey: region,
201198
zoneTopologyKey: zone,
202199
},
203200
},

driver/driver.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -135,15 +135,20 @@ func NewDriver(ep, authKeysStr, folderID, driverName, address, clusterUUID strin
135135
return nil, err
136136
}
137137

138+
region := ""
139+
zone := ""
140+
instanceID := ""
141+
138142
instanceIdentity, err := ychelpers.GetInstanceIdentity()
139143
if err != nil {
140-
return nil, err
144+
// ignore error if we can't get instance identity
145+
logrus.Warningf("failed to get instance identity: %v", err)
146+
} else {
147+
region = instanceIdentity.Region
148+
zone = instanceIdentity.AvailabilityZone
149+
instanceID = instanceIdentity.InstanceID
141150
}
142151

143-
region := instanceIdentity.Region
144-
zone := instanceIdentity.AvailabilityZone
145-
instanceID := instanceIdentity.InstanceID
146-
147152
if version == "" {
148153
version = "dev"
149154
}

0 commit comments

Comments
 (0)