Skip to content

Commit ab9c8e3

Browse files
authored
Support External Networks (#7)
Damnit CAPO!!!! It does infer the external network, and when I say "the" I mean only one, or it has a hissy fit, so we need to arbitrarily choose one for it.
1 parent 242270d commit ab9c8e3

File tree

11 files changed

+404
-87
lines changed

11 files changed

+404
-87
lines changed

charts/region/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: A Helm chart for deploying Unikorn's Region Controller
44

55
type: application
66

7-
version: v0.1.2
8-
appVersion: v0.1.2
7+
version: v0.1.3
8+
appVersion: v0.1.3
99

1010
icon: https://raw.githubusercontent.com/unikorn-cloud/unikorn/main/icons/default.png

pkg/handler/handler.go

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,16 @@ func convertCloudConfig(identity *unikornv1.Identity, in *providers.CloudConfig)
220220
return out
221221
}
222222

223+
func generateClusterInfo(in *openapi.IdentityWrite) *providers.ClusterInfo {
224+
out := &providers.ClusterInfo{
225+
OrganizationID: in.OrganizationId,
226+
ProjectID: in.ProjectId,
227+
ClusterID: in.ClusterId,
228+
}
229+
230+
return out
231+
}
232+
223233
func (h *Handler) PostApiV1RegionsRegionIDIdentities(w http.ResponseWriter, r *http.Request, regionID openapi.RegionIDParameter) {
224234
request := &openapi.IdentityWrite{}
225235

@@ -234,7 +244,7 @@ func (h *Handler) PostApiV1RegionsRegionIDIdentities(w http.ResponseWriter, r *h
234244
return
235245
}
236246

237-
identity, cloudconfig, err := provider.CreateIdentity(r.Context(), &providers.ClusterInfo{})
247+
identity, cloudconfig, err := provider.CreateIdentity(r.Context(), generateClusterInfo(request))
238248
if err != nil {
239249
errors.HandleError(w, r, err)
240250
return
@@ -246,3 +256,39 @@ func (h *Handler) PostApiV1RegionsRegionIDIdentities(w http.ResponseWriter, r *h
246256

247257
func (h *Handler) DeleteApiV1RegionsRegionIDIdentitiesIdentityID(w http.ResponseWriter, r *http.Request, regionID openapi.RegionIDParameter, identityID openapi.IdentityIDParameter) {
248258
}
259+
260+
func convertExternalNetwork(in providers.ExternalNetwork) openapi.ExternalNetwork {
261+
out := openapi.ExternalNetwork{
262+
Id: in.ID,
263+
Name: in.Name,
264+
}
265+
266+
return out
267+
}
268+
269+
func convertExternalNetworks(in providers.ExternalNetworks) openapi.ExternalNetworks {
270+
out := make(openapi.ExternalNetworks, len(in))
271+
272+
for i := range in {
273+
out[i] = convertExternalNetwork(in[i])
274+
}
275+
276+
return out
277+
}
278+
279+
func (h *Handler) GetApiV1RegionsRegionIDExternalnetworks(w http.ResponseWriter, r *http.Request, regionID openapi.RegionIDParameter) {
280+
provider, err := region.NewClient(h.client, h.namespace).Provider(r.Context(), regionID)
281+
if err != nil {
282+
errors.HandleError(w, r, err)
283+
return
284+
}
285+
286+
result, err := provider.ListExternalNetworks(r.Context())
287+
if err != nil {
288+
errors.HandleError(w, r, err)
289+
return
290+
}
291+
292+
h.setCacheable(w)
293+
util.WriteJSONResponse(w, r, http.StatusOK, convertExternalNetworks(result))
294+
}

pkg/openapi/client.go

Lines changed: 141 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/openapi/router.go

Lines changed: 39 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)