@@ -8,19 +8,27 @@ import {
88 waitForResource ,
99} from '../../../bridge'
1010import type { WaitForOptions , Zone } from '../../../bridge'
11- import { SERVER_TRANSIENT_STATUSES } from './content.gen'
11+ import {
12+ SERVER_PRIVATE_NETWORK_SERVER_TRANSIENT_STATUSES ,
13+ SERVER_TRANSIENT_STATUSES ,
14+ } from './content.gen'
1215import {
1316 marshalCreateServerRequest ,
17+ marshalPrivateNetworkApiAddServerPrivateNetworkRequest ,
18+ marshalPrivateNetworkApiSetServerPrivateNetworksRequest ,
1419 marshalReinstallServerRequest ,
1520 marshalStartConnectivityDiagnosticRequest ,
1621 marshalUpdateServerRequest ,
1722 unmarshalConnectivityDiagnostic ,
1823 unmarshalListOSResponse ,
24+ unmarshalListServerPrivateNetworksResponse ,
1925 unmarshalListServerTypesResponse ,
2026 unmarshalListServersResponse ,
2127 unmarshalOS ,
2228 unmarshalServer ,
29+ unmarshalServerPrivateNetwork ,
2330 unmarshalServerType ,
31+ unmarshalSetServerPrivateNetworksResponse ,
2432 unmarshalStartConnectivityDiagnosticResponse ,
2533} from './marshalling.gen'
2634import type {
@@ -33,15 +41,23 @@ import type {
3341 GetServerTypeRequest ,
3442 ListOSRequest ,
3543 ListOSResponse ,
44+ ListServerPrivateNetworksResponse ,
3645 ListServerTypesRequest ,
3746 ListServerTypesResponse ,
3847 ListServersRequest ,
3948 ListServersResponse ,
4049 OS ,
50+ PrivateNetworkApiAddServerPrivateNetworkRequest ,
51+ PrivateNetworkApiDeleteServerPrivateNetworkRequest ,
52+ PrivateNetworkApiGetServerPrivateNetworkRequest ,
53+ PrivateNetworkApiListServerPrivateNetworksRequest ,
54+ PrivateNetworkApiSetServerPrivateNetworksRequest ,
4155 RebootServerRequest ,
4256 ReinstallServerRequest ,
4357 Server ,
58+ ServerPrivateNetwork ,
4459 ServerType ,
60+ SetServerPrivateNetworksResponse ,
4561 StartConnectivityDiagnosticRequest ,
4662 StartConnectivityDiagnosticResponse ,
4763 UpdateServerRequest ,
@@ -328,3 +344,152 @@ export class API extends ParentAPI {
328344 unmarshalConnectivityDiagnostic ,
329345 )
330346}
347+
348+ /** Apple silicon - Private Networks API. */
349+ export class PrivateNetworkAPI extends ParentAPI {
350+ /** Lists the available zones of the API. */
351+ public static readonly LOCALITIES : Zone [ ] = [ 'fr-par-1' , 'fr-par-3' ]
352+
353+ getServerPrivateNetwork = (
354+ request : Readonly < PrivateNetworkApiGetServerPrivateNetworkRequest > ,
355+ ) =>
356+ this . client . fetch < ServerPrivateNetwork > (
357+ {
358+ method : 'GET' ,
359+ path : `/apple-silicon/v1alpha1/zones/${ validatePathParam ( 'zone' , request . zone ?? this . client . settings . defaultZone ) } /servers/${ validatePathParam ( 'serverId' , request . serverId ) } /private-networks/${ validatePathParam ( 'privateNetworkId' , request . privateNetworkId ) } ` ,
360+ } ,
361+ unmarshalServerPrivateNetwork ,
362+ )
363+
364+ /**
365+ * Waits for {@link ServerPrivateNetwork} to be in a final state.
366+ *
367+ * @param request - The request
368+ * {@link PrivateNetworkApiGetServerPrivateNetworkRequest}
369+ * @param options - The waiting options
370+ * @returns A Promise of ServerPrivateNetwork
371+ */
372+ waitForServerPrivateNetwork = (
373+ request : Readonly < PrivateNetworkApiGetServerPrivateNetworkRequest > ,
374+ options ?: Readonly < WaitForOptions < ServerPrivateNetwork > > ,
375+ ) =>
376+ waitForResource (
377+ options ?. stop ??
378+ ( res =>
379+ Promise . resolve (
380+ ! SERVER_PRIVATE_NETWORK_SERVER_TRANSIENT_STATUSES . includes (
381+ res . status ,
382+ ) ,
383+ ) ) ,
384+ this . getServerPrivateNetwork ,
385+ request ,
386+ options ,
387+ )
388+
389+ /**
390+ * Add a server to a Private Network. Add an Apple silicon server to a Private
391+ * Network.
392+ *
393+ * @param request - The request
394+ * {@link PrivateNetworkApiAddServerPrivateNetworkRequest}
395+ * @returns A Promise of ServerPrivateNetwork
396+ */
397+ addServerPrivateNetwork = (
398+ request : Readonly < PrivateNetworkApiAddServerPrivateNetworkRequest > ,
399+ ) =>
400+ this . client . fetch < ServerPrivateNetwork > (
401+ {
402+ body : JSON . stringify (
403+ marshalPrivateNetworkApiAddServerPrivateNetworkRequest (
404+ request ,
405+ this . client . settings ,
406+ ) ,
407+ ) ,
408+ headers : jsonContentHeaders ,
409+ method : 'POST' ,
410+ path : `/apple-silicon/v1alpha1/zones/${ validatePathParam ( 'zone' , request . zone ?? this . client . settings . defaultZone ) } /servers/${ validatePathParam ( 'serverId' , request . serverId ) } /private-networks` ,
411+ } ,
412+ unmarshalServerPrivateNetwork ,
413+ )
414+
415+ /**
416+ * Set multiple Private Networks on a server. Configure multiple Private
417+ * Networks on an Apple silicon server.
418+ *
419+ * @param request - The request
420+ * {@link PrivateNetworkApiSetServerPrivateNetworksRequest}
421+ * @returns A Promise of SetServerPrivateNetworksResponse
422+ */
423+ setServerPrivateNetworks = (
424+ request : Readonly < PrivateNetworkApiSetServerPrivateNetworksRequest > ,
425+ ) =>
426+ this . client . fetch < SetServerPrivateNetworksResponse > (
427+ {
428+ body : JSON . stringify (
429+ marshalPrivateNetworkApiSetServerPrivateNetworksRequest (
430+ request ,
431+ this . client . settings ,
432+ ) ,
433+ ) ,
434+ headers : jsonContentHeaders ,
435+ method : 'PUT' ,
436+ path : `/apple-silicon/v1alpha1/zones/${ validatePathParam ( 'zone' , request . zone ?? this . client . settings . defaultZone ) } /servers/${ validatePathParam ( 'serverId' , request . serverId ) } /private-networks` ,
437+ } ,
438+ unmarshalSetServerPrivateNetworksResponse ,
439+ )
440+
441+ protected pageOfListServerPrivateNetworks = (
442+ request : Readonly < PrivateNetworkApiListServerPrivateNetworksRequest > = { } ,
443+ ) =>
444+ this . client . fetch < ListServerPrivateNetworksResponse > (
445+ {
446+ method : 'GET' ,
447+ path : `/apple-silicon/v1alpha1/zones/${ validatePathParam ( 'zone' , request . zone ?? this . client . settings . defaultZone ) } /server-private-networks` ,
448+ urlParams : urlParams (
449+ [ 'ipam_ip_ids' , request . ipamIpIds ] ,
450+ [ 'order_by' , request . orderBy ] ,
451+ [ 'organization_id' , request . organizationId ] ,
452+ [ 'page' , request . page ] ,
453+ [
454+ 'page_size' ,
455+ request . pageSize ?? this . client . settings . defaultPageSize ,
456+ ] ,
457+ [ 'private_network_id' , request . privateNetworkId ] ,
458+ [ 'project_id' , request . projectId ] ,
459+ [ 'server_id' , request . serverId ] ,
460+ ) ,
461+ } ,
462+ unmarshalListServerPrivateNetworksResponse ,
463+ )
464+
465+ /**
466+ * List the Private Networks of a server. List the Private Networks of an
467+ * Apple silicon server.
468+ *
469+ * @param request - The request
470+ * {@link PrivateNetworkApiListServerPrivateNetworksRequest}
471+ * @returns A Promise of ListServerPrivateNetworksResponse
472+ */
473+ listServerPrivateNetworks = (
474+ request : Readonly < PrivateNetworkApiListServerPrivateNetworksRequest > = { } ,
475+ ) =>
476+ enrichForPagination (
477+ 'serverPrivateNetworks' ,
478+ this . pageOfListServerPrivateNetworks ,
479+ request ,
480+ )
481+
482+ /**
483+ * Delete a Private Network.
484+ *
485+ * @param request - The request
486+ * {@link PrivateNetworkApiDeleteServerPrivateNetworkRequest}
487+ */
488+ deleteServerPrivateNetwork = (
489+ request : Readonly < PrivateNetworkApiDeleteServerPrivateNetworkRequest > ,
490+ ) =>
491+ this . client . fetch < void > ( {
492+ method : 'DELETE' ,
493+ path : `/apple-silicon/v1alpha1/zones/${ validatePathParam ( 'zone' , request . zone ?? this . client . settings . defaultZone ) } /servers/${ validatePathParam ( 'serverId' , request . serverId ) } /private-networks/${ validatePathParam ( 'privateNetworkId' , request . privateNetworkId ) } ` ,
494+ } )
495+ }
0 commit comments