From 1dd8cd7f407012146586d5f392c9259a57cac06e Mon Sep 17 00:00:00 2001 From: Jonathan Roth Date: Tue, 16 Jan 2024 12:14:57 +0200 Subject: [PATCH 1/4] Make swagger param private --- controllers/docs.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/controllers/docs.go b/controllers/docs.go index b7769c950..a5df72dee 100644 --- a/controllers/docs.go +++ b/controllers/docs.go @@ -349,7 +349,7 @@ type HostFromNetworkParams struct { } // swagger:parameters deleteEnrollmentKey -type DeleteEnrollmentKeyParam struct { +type deleteEnrollmentKeyParam struct { // in: path KeyID string `json:"keyid"` } @@ -443,5 +443,6 @@ func useUnused() bool { _ = signal{} _ = filenameToGet{} _ = dnsNetworkPathParam{} + _ = deleteEnrollmentKeyParam{} return false } From 354647e96bb4896441070ac210253c3b94b73e1b Mon Sep 17 00:00:00 2001 From: Jonathan Roth Date: Tue, 16 Jan 2024 12:15:35 +0200 Subject: [PATCH 2/4] Add missing swagger params for create/update enrollment key --- controllers/docs.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/controllers/docs.go b/controllers/docs.go index a5df72dee..16675721c 100644 --- a/controllers/docs.go +++ b/controllers/docs.go @@ -348,6 +348,24 @@ type HostFromNetworkParams struct { Network string `json:"network"` } +// swagger:parameters createEnrollmentKey +type createEnrollmentKeyParams struct { + // APIEnrollmentKey + // in: body + Body models.APIEnrollmentKey `json:"body"` +} + +// swagger:parameters updateEnrollmentKey +type updateEnrollmentKeyParams struct { + // KeyID + // in: path + KeyID string `json:"keyid"` + + // APIEnrollmentKey + // in: body + Body models.APIEnrollmentKey `json:"body"` +} + // swagger:parameters deleteEnrollmentKey type deleteEnrollmentKeyParam struct { // in: path @@ -443,6 +461,8 @@ func useUnused() bool { _ = signal{} _ = filenameToGet{} _ = dnsNetworkPathParam{} + _ = createEnrollmentKeyParams{} + _ = updateEnrollmentKeyParams{} _ = deleteEnrollmentKeyParam{} return false } From 2bd257700fe0b9cf99905b7d9d046fde64a41dcf Mon Sep 17 00:00:00 2001 From: Jonathan Roth Date: Mon, 4 Mar 2024 18:00:29 +0200 Subject: [PATCH 3/4] Use same string in swagger doc path as the parameter --- controllers/enrollmentkeys.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/enrollmentkeys.go b/controllers/enrollmentkeys.go index 0a8e022f4..1eff0808c 100644 --- a/controllers/enrollmentkeys.go +++ b/controllers/enrollmentkeys.go @@ -180,7 +180,7 @@ func createEnrollmentKey(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(newEnrollmentKey) } -// swagger:route PUT /api/v1/enrollment-keys/:id enrollmentKeys updateEnrollmentKey +// swagger:route PUT /api/v1/enrollment-keys/{keyid} enrollmentKeys updateEnrollmentKey // // Updates an EnrollmentKey for hosts to use on Netmaker server. Updates only the relay to use. // From 7b39b3976c17b6eabe8ced129d2863d1ee7c4c16 Mon Sep 17 00:00:00 2001 From: Jonathan Roth Date: Tue, 16 Jan 2024 12:23:09 +0200 Subject: [PATCH 4/4] Re-generate swagger swagger generate spec -t ee -o swagger.yml --- swagger.yml | 352 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 327 insertions(+), 25 deletions(-) diff --git a/swagger.yml b/swagger.yml index 7977a9d03..6b6862fb2 100644 --- a/swagger.yml +++ b/swagger.yml @@ -15,9 +15,43 @@ definitions: description: ACLContainer - the total list of all node's ACL in a given network type: object x-go-package: github.com/gravitl/netmaker/logic/acls + APIEnrollmentKey: + description: APIEnrollmentKey - used to create enrollment keys via API + properties: + expiration: + format: int64 + type: integer + x-go-name: Expiration + networks: + items: + type: string + type: array + x-go-name: Networks + relay: + type: string + x-go-name: Relay + tags: + items: + type: string + type: array + x-go-name: Tags + type: + $ref: '#/definitions/KeyType' + unlimited: + type: boolean + x-go-name: Unlimited + uses_remaining: + format: int64 + type: integer + x-go-name: UsesRemaining + type: object + x-go-package: github.com/gravitl/netmaker/models ApiHost: description: ApiHost - the host struct for API usage properties: + autoupdate: + type: boolean + x-go-name: AutoUpdate debug: type: boolean x-go-name: Debug @@ -41,12 +75,6 @@ definitions: isdefault: type: boolean x-go-name: IsDefault - isrelay: - type: boolean - x-go-name: IsRelay - isrelayed: - type: boolean - x-go-name: IsRelayed isstatic: type: boolean x-go-name: IsStatic @@ -75,17 +103,13 @@ definitions: os: type: string x-go-name: OS + persistentkeepalive: + format: int64 + type: integer + x-go-name: PersistentKeepalive publickey: type: string x-go-name: PublicKey - relay_hosts: - items: - type: string - type: array - x-go-name: RelayedHosts - relayed_by: - type: string - x-go-name: RelayedBy verbosity: format: int64 type: integer @@ -135,6 +159,12 @@ definitions: type: string type: array x-go-name: ExtraAllowedIPs + postdown: + type: string + x-go-name: PostDown + postup: + type: string + x-go-name: PostUp publickey: type: string x-go-name: PublicKey @@ -187,6 +217,32 @@ definitions: x-go-name: Ranges type: object x-go-package: github.com/gravitl/netmaker/models + EgressInfo: + description: EgressInfo - struct for egress info + properties: + egress_gateway_cfg: + $ref: '#/definitions/EgressGatewayRequest' + egress_gw_addr: + $ref: '#/definitions/IPNet' + egress_id: + type: string + x-go-name: EgressID + network: + $ref: '#/definitions/IPNet' + type: object + x-go-package: github.com/gravitl/netmaker/models + EgressNetworkRoutes: + description: EgressNetworkRoutes - struct for egress network routes for adding routes to peer's interface + properties: + egress_ranges: + items: + type: string + type: array + x-go-name: EgressRanges + node_addr: + $ref: '#/definitions/IPNet' + type: object + x-go-package: github.com/gravitl/netmaker/models EnrollmentKey: description: EnrollmentKey - the key used to register hosts and join them to specific networks properties: @@ -199,6 +255,10 @@ definitions: type: string type: array x-go-name: Networks + relay: + format: uuid + type: string + x-go-name: Relay tags: items: type: string @@ -230,6 +290,11 @@ definitions: address6: type: string x-go-name: Address6 + allowed_ips: + items: + type: string + type: array + x-go-name: AllowedIPs clientid: type: string x-go-name: ClientID @@ -265,6 +330,12 @@ definitions: ownerid: type: string x-go-name: OwnerID + postdown: + type: string + x-go-name: PostDown + postup: + type: string + x-go-name: PostUp privatekey: type: string x-go-name: PrivateKey @@ -280,6 +351,19 @@ definitions: title: File represents an open file descriptor. type: object x-go-package: os + FwUpdate: + description: FwUpdate - struct for firewall updates + properties: + egress_info: + additionalProperties: + $ref: '#/definitions/EgressInfo' + type: object + x-go-name: EgressInfo + is_egress_gw: + type: boolean + x-go-name: IsEgressGw + type: object + x-go-package: github.com/gravitl/netmaker/models HardwareAddr: items: format: uint8 @@ -362,6 +446,8 @@ definitions: os: type: string x-go-name: OS + persistentkeepalive: + $ref: '#/definitions/Duration' publickey: $ref: '#/definitions/Key' traffickeypublic: @@ -386,11 +472,52 @@ definitions: x-go-name: WgPublicListenPort type: object x-go-package: github.com/gravitl/netmaker/models + HostInfoMap: + additionalProperties: + $ref: '#/definitions/HostNetworkInfo' + description: HostInfoMap - map of host public keys to host networking info + type: object + x-go-package: github.com/gravitl/netmaker/models + HostNetworkInfo: + description: HostNetworkInfo - holds info related to host networking (used for client side peer calculations) + properties: + interfaces: + items: + $ref: '#/definitions/Iface' + type: array + x-go-name: Interfaces + is_static: + type: boolean + x-go-name: IsStatic + listen_port: + format: int64 + type: integer + x-go-name: ListenPort + type: object + x-go-package: github.com/gravitl/netmaker/models HostPull: description: HostPull - response of a host's pull properties: + change_default_gw: + type: boolean + x-go-name: ChangeDefaultGw + default_gw_ip: + type: string + x-go-name: DefaultGwIp + egress_network_routes: + items: + $ref: '#/definitions/EgressNetworkRoutes' + type: array + x-go-name: EgressRoutes + fw_update: + $ref: '#/definitions/FwUpdate' host: $ref: '#/definitions/Host' + host_network_info: + $ref: '#/definitions/HostInfoMap' + is_inet_gw: + type: boolean + x-go-name: IsInternetGw nodes: items: $ref: '#/definitions/Node' @@ -413,6 +540,9 @@ definitions: address: type: string x-go-name: Address + host_id: + type: string + x-go-name: HostID id: type: string x-go-name: ID @@ -466,6 +596,16 @@ definitions: x-go-name: Name type: object x-go-package: github.com/gravitl/netmaker/models + InetNodeReq: + description: InetNodeReq - exit node request struct + properties: + inet_node_client_ids: + items: + type: string + type: array + x-go-name: InetNodeClientIDs + type: object + x-go-package: github.com/gravitl/netmaker/models Key: description: |- A Key is a public, private, or pre-shared secret key. The Key constructor @@ -758,13 +898,15 @@ definitions: format: date-time type: string x-go-name: ExpirationDateTime - failover: - type: boolean - x-go-name: Failover - failovernode: + fail_over_peers: + additionalProperties: + type: object + type: object + x-go-name: FailOverPeers + failed_over_by: format: uuid type: string - x-go-name: FailoverNode + x-go-name: FailedOverBy hostid: format: uuid type: string @@ -773,6 +915,8 @@ definitions: format: uuid type: string x-go-name: ID + inet_node_req: + $ref: '#/definitions/InetNodeReq' ingressdns: type: string x-go-name: IngressDNS @@ -782,14 +926,21 @@ definitions: ingressgatewayrange6: type: string x-go-name: IngressGatewayRange6 - internetgateway: - $ref: '#/definitions/UDPAddr' + internetgw_node_id: + type: string + x-go-name: InternetGwID + is_fail_over: + type: boolean + x-go-name: IsFailOver isegressgateway: type: boolean x-go-name: IsEgressGateway isingressgateway: type: boolean x-go-name: IsIngressGateway + isinternetgateway: + type: boolean + x-go-name: IsInternetGateway isrelay: type: boolean x-go-name: IsRelay @@ -810,6 +961,9 @@ definitions: x-go-name: LastPeerUpdate localaddress: $ref: '#/definitions/IPNet' + metadata: + type: string + x-go-name: Metadata network: type: string x-go-name: Network @@ -823,8 +977,6 @@ definitions: pendingdelete: type: boolean x-go-name: PendingDelete - persistentkeepalive: - $ref: '#/definitions/Duration' relayedby: type: string x-go-name: RelayedBy @@ -930,6 +1082,8 @@ definitions: type: string BrokerType: type: string + CacheEnabled: + type: string ClientID: type: string ClientSecret: @@ -965,6 +1119,8 @@ definitions: IsEE: type: string x-go-name: IsPro + JwtValidityDuration: + $ref: '#/definitions/Duration' LicenseValue: type: string MQPassword: @@ -997,6 +1153,8 @@ definitions: type: string PublicIPService: type: string + RacAutoDisable: + type: boolean RestBackend: type: string SQLConn: @@ -1040,9 +1198,18 @@ definitions: properties: action: $ref: '#/definitions/SignalAction' + from_host_id: + type: string + x-go-name: FromHostID from_host_pubkey: type: string x-go-name: FromHostPubKey + from_node_id: + type: string + x-go-name: FromNodeID + is_pro: + type: boolean + x-go-name: IsPro reply: type: boolean x-go-name: Reply @@ -1053,12 +1220,15 @@ definitions: format: int64 type: integer x-go-name: TimeStamp + to_host_id: + type: string + x-go-name: ToHostID to_host_pubkey: type: string x-go-name: ToHostPubKey - turn_relay_addr: + to_node_id: type: string - x-go-name: TurnRelayEndpoint + x-go-name: ToNodeID type: object x-go-package: github.com/gravitl/netmaker/models SignalAction: @@ -1114,6 +1284,10 @@ definitions: issuperadmin: type: boolean x-go-name: IsSuperAdmin + last_login_time: + format: date-time + type: string + x-go-name: LastLoginTime password: type: string x-go-name: Password @@ -1765,6 +1939,41 @@ paths: summary: Update a network ACL (Access Control List). tags: - networks + /api/networks/{networkname}/acls/v2: + put: + operationId: updateNetworkACL + parameters: + - description: 'name: network name' + in: path + name: networkname + required: true + type: string + x-go-name: Networkname + - description: ACL Container + in: body + name: acl_container + schema: + $ref: '#/definitions/ACLContainer' + x-go-name: ACLContainer + responses: + "200": + $ref: '#/responses/aclContainerResponse' + schemes: + - https + summary: Update a network ACL (Access Control List). + tags: + - networks + /api/node/{nodeid}/failOverME: + post: + operationId: failOver_me + responses: + "200": + $ref: '#/responses/nodeResponse' + schemes: + - https + summary: Create a relay. + tags: + - node /api/nodes: get: operationId: getAllNodes @@ -2014,6 +2223,37 @@ paths: summary: Remove a relay. tags: - nodes + /api/nodes/{network}/{nodeid}/inet_gw: + delete: + operationId: deleteInternetGw + responses: + "200": + $ref: '#/responses/nodeResponse' + schemes: + - https + summary: Delete an internet gw. + tags: + - nodes + post: + operationId: createInternetGw + responses: + "200": + $ref: '#/responses/nodeResponse' + schemes: + - https + summary: Create an inet node. + tags: + - nodes + put: + operationId: updateInternetGw + responses: + "200": + $ref: '#/responses/nodeResponse' + schemes: + - https + summary: update an inet node. + tags: + - nodes /api/nodes/{network}/{nodeid}/ingress/users: get: operationId: ingressGatewayUsers @@ -2300,6 +2540,13 @@ paths: - enrollmentKeys post: operationId: createEnrollmentKey + parameters: + - description: APIEnrollmentKey + in: body + name: body + schema: + $ref: '#/definitions/APIEnrollmentKey' + x-go-name: Body responses: "200": $ref: '#/responses/EnrollmentKey' @@ -2325,6 +2572,29 @@ paths: summary: Deletes an EnrollmentKey from Netmaker server. tags: - enrollmentKeys + put: + operationId: updateEnrollmentKey + parameters: + - description: KeyID + in: path + name: keyid + required: true + type: string + x-go-name: KeyID + - description: APIEnrollmentKey + in: body + name: body + schema: + $ref: '#/definitions/APIEnrollmentKey' + x-go-name: Body + responses: + "200": + $ref: '#/responses/EnrollmentKey' + schemes: + - https + summary: Updates an EnrollmentKey for hosts to use on Netmaker server. Updates only the relay to use. + tags: + - enrollmentKeys /api/v1/enrollment-keys/{token}: post: operationId: handleHostRegister @@ -2347,6 +2617,17 @@ paths: summary: Handles a Netclient registration with server and add nodes accordingly. tags: - enrollmentKeys + /api/v1/fallback/host/{hostid}: + put: + operationId: hostUpdateFallback + responses: + "200": + $ref: '#/responses/apiHostResponse' + schemes: + - https + summary: Updates a Netclient host on Netmaker server. + tags: + - hosts /api/v1/host: get: description: Used by clients for "pull" command @@ -2369,6 +2650,27 @@ paths: summary: Delete all legacy nodes from DB. tags: - nodes + /api/v1/node/failover: + delete: + operationId: deletefailOver + responses: + "200": + $ref: '#/responses/nodeResponse' + schemes: + - https + summary: Create a relay. + tags: + - node + post: + operationId: createfailOver + responses: + "200": + $ref: '#/responses/nodeResponse' + schemes: + - https + summary: Create a relay. + tags: + - node /api/v1/nodes/migrate: put: operationId: migrateData