@@ -1191,6 +1191,15 @@ type Node struct {
11911191 UpdatedAt * time.Time `json:"updated_at"`
11921192}
11931193
1194+ // NodeMetadataCoreV1Taint: node metadata core v1 taint.
1195+ type NodeMetadataCoreV1Taint struct {
1196+ Key string `json:"key"`
1197+
1198+ Value string `json:"value"`
1199+
1200+ Effect string `json:"effect"`
1201+ }
1202+
11941203// UpdateClusterRequestAutoUpgrade: update cluster request auto upgrade.
11951204type UpdateClusterRequestAutoUpgrade struct {
11961205 // Enable: defines whether auto upgrade is enabled for the cluster.
@@ -1266,6 +1275,15 @@ type UpdatePoolRequestUpgradePolicy struct {
12661275 MaxSurge * uint32 `json:"max_surge"`
12671276}
12681277
1278+ // AuthExternalNodeRequest: auth external node request.
1279+ type AuthExternalNodeRequest struct {
1280+ // Region: region to target. If none is passed will use default region from the config.
1281+ Region scw.Region `json:"-"`
1282+
1283+ // PoolID: pool the node will be attached to.
1284+ PoolID string `json:"-"`
1285+ }
1286+
12691287// CreateClusterRequest: create cluster request.
12701288type CreateClusterRequest struct {
12711289 // Region: region to target. If none is passed will use default region from the config.
@@ -1455,6 +1473,13 @@ type ExternalNode struct {
14551473 NodeTaints []* ExternalNodeCoreV1Taint `json:"node_taints"`
14561474}
14571475
1476+ // ExternalNodeAuth: external node auth.
1477+ type ExternalNodeAuth struct {
1478+ NodeToken string `json:"node_token"`
1479+
1480+ APIURL string `json:"api_url"`
1481+ }
1482+
14581483// GetClusterKubeConfigRequest: get cluster kube config request.
14591484type GetClusterKubeConfigRequest struct {
14601485 // Region: region to target. If none is passed will use default region from the config.
@@ -1476,6 +1501,12 @@ type GetClusterRequest struct {
14761501 ClusterID string `json:"-"`
14771502}
14781503
1504+ // GetNodeMetadataRequest: get node metadata request.
1505+ type GetNodeMetadataRequest struct {
1506+ // Region: region to target. If none is passed will use default region from the config.
1507+ Region scw.Region `json:"-"`
1508+ }
1509+
14791510// GetNodeRequest: get node request.
14801511type GetNodeRequest struct {
14811512 // Region: region to target. If none is passed will use default region from the config.
@@ -1789,6 +1820,37 @@ type MigrateClusterToRoutedIPsRequest struct {
17891820 ClusterID string `json:"-"`
17901821}
17911822
1823+ // NodeMetadata: node metadata.
1824+ type NodeMetadata struct {
1825+ ID string `json:"id"`
1826+
1827+ Name string `json:"name"`
1828+
1829+ ClusterURL string `json:"cluster_url"`
1830+
1831+ ClusterCa string `json:"cluster_ca"`
1832+
1833+ CredentialProviderConfig string `json:"credential_provider_config"`
1834+
1835+ PoolVersion string `json:"pool_version"`
1836+
1837+ KubeletConfig string `json:"kubelet_config"`
1838+
1839+ NodeLabels map [string ]string `json:"node_labels"`
1840+
1841+ NodeTaints []* NodeMetadataCoreV1Taint `json:"node_taints"`
1842+
1843+ PrivateNetworkMode string `json:"private_network_mode"`
1844+
1845+ KapsuleIfaceMac string `json:"kapsule_iface_mac"`
1846+
1847+ FullIsolation bool `json:"full_isolation"`
1848+
1849+ HasGpu bool `json:"has_gpu"`
1850+
1851+ ExternalIP string `json:"external_ip"`
1852+ }
1853+
17921854// RebootNodeRequest: reboot node request.
17931855type RebootNodeRequest struct {
17941856 // Region: region to target. If none is passed will use default region from the config.
@@ -2594,6 +2656,69 @@ func (s *API) DeletePool(req *DeletePoolRequest, opts ...scw.RequestOption) (*Po
25942656 return & resp , nil
25952657}
25962658
2659+ // GetNodeMetadata: Rerieve metadata to instantiate a Kapsule/Kosmos node. This method is not intended to be called by end users but rather programmatically by the node-installer.
2660+ func (s * API ) GetNodeMetadata (req * GetNodeMetadataRequest , opts ... scw.RequestOption ) (* NodeMetadata , error ) {
2661+ var err error
2662+
2663+ if req .Region == "" {
2664+ defaultRegion , _ := s .client .GetDefaultRegion ()
2665+ req .Region = defaultRegion
2666+ }
2667+
2668+ if fmt .Sprint (req .Region ) == "" {
2669+ return nil , errors .New ("field Region cannot be empty in request" )
2670+ }
2671+
2672+ scwReq := & scw.ScalewayRequest {
2673+ Method : "GET" ,
2674+ Path : "/k8s/v1/regions/" + fmt .Sprint (req .Region ) + "/nodes/metadata" ,
2675+ }
2676+
2677+ var resp NodeMetadata
2678+
2679+ err = s .client .Do (scwReq , & resp , opts ... )
2680+ if err != nil {
2681+ return nil , err
2682+ }
2683+ return & resp , nil
2684+ }
2685+
2686+ // AuthExternalNode: Creates a newer Kosmos node and returns its token. This method is not intended to be called by end users but rather programmatically by the node-installer.
2687+ func (s * API ) AuthExternalNode (req * AuthExternalNodeRequest , opts ... scw.RequestOption ) (* ExternalNodeAuth , error ) {
2688+ var err error
2689+
2690+ if req .Region == "" {
2691+ defaultRegion , _ := s .client .GetDefaultRegion ()
2692+ req .Region = defaultRegion
2693+ }
2694+
2695+ if fmt .Sprint (req .Region ) == "" {
2696+ return nil , errors .New ("field Region cannot be empty in request" )
2697+ }
2698+
2699+ if fmt .Sprint (req .PoolID ) == "" {
2700+ return nil , errors .New ("field PoolID cannot be empty in request" )
2701+ }
2702+
2703+ scwReq := & scw.ScalewayRequest {
2704+ Method : "POST" ,
2705+ Path : "/k8s/v1/regions/" + fmt .Sprint (req .Region ) + "/pools/" + fmt .Sprint (req .PoolID ) + "/external-nodes/auth" ,
2706+ }
2707+
2708+ err = scwReq .SetBody (req )
2709+ if err != nil {
2710+ return nil , err
2711+ }
2712+
2713+ var resp ExternalNodeAuth
2714+
2715+ err = s .client .Do (scwReq , & resp , opts ... )
2716+ if err != nil {
2717+ return nil , err
2718+ }
2719+ return & resp , nil
2720+ }
2721+
25972722// CreateExternalNode: Retrieve metadata for a Kosmos node. This method is not intended to be called by end users but rather programmatically by the kapsule-node-agent.
25982723func (s * API ) CreateExternalNode (req * CreateExternalNodeRequest , opts ... scw.RequestOption ) (* ExternalNode , error ) {
25992724 var err error
0 commit comments