-
Notifications
You must be signed in to change notification settings - Fork 339
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Assign multiple servers to a capability (#7079)
* Added TO logic to assign multiple servers per capability. * Added TP logic to assign multiple servers per capability. * minor corrections and variable name change * Fixed vairable names. * Fixed broken links and another variable name change. * Updated test client. * Updated based on review comments. * Changed serverIDs type to int to avoid string to int conversion. * Added multiple_servers_capabilities() and changed the documents and routes to match the API call to this new function. * Updated tests, and TP to relate to multiple_servers_capabilities(). * Removed old function for mass-assignment (server or capability) * Updated route ID * Updated docs * Updated docs-1 * Split PUT API call into POST and DELETE. * Updated tests * Updated docs-2 * Updated tests, added another condition for simultaneous add, delete. * Updated tests-1 * Tired to remove database query built from user-controlled sources * Fix APIv5 test. * Fixed docs based on review comments and removed duplicate code. * Added pageType variable to reduce if-else statements. * Updated per review comments-1 * Updated tests. * Updated tests and docs. * Removed unused variable * Added check for many:many * Added validation for JSON body. * Updated tests based on newly added validation logic.
- Loading branch information
1 parent
22c418f
commit 7086637
Showing
23 changed files
with
1,009 additions
and
275 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
.. | ||
.. | ||
.. Licensed under the Apache License, Version 2.0 (the "License"); | ||
.. you may not use this file except in compliance with the License. | ||
.. You may obtain a copy of the License at | ||
.. | ||
.. http://www.apache.org/licenses/LICENSE-2.0 | ||
.. | ||
.. Unless required by applicable law or agreed to in writing, software | ||
.. distributed under the License is distributed on an "AS IS" BASIS, | ||
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
.. See the License for the specific language governing permissions and | ||
.. limitations under the License. | ||
.. | ||
.. _to-api-v4-multiple_servers_capabilities: | ||
|
||
********************************* | ||
``multiple_servers_capabilities`` | ||
********************************* | ||
|
||
.. versionadded:: 4.1 | ||
|
||
``POST`` | ||
======== | ||
Inserts a list of :term:`Server Capability` names associated to a server and vice versa i.e insert a list of :term:`Server` ids associated to a server capability. | ||
|
||
:Auth. Required: Yes | ||
:Roles Required: "admin" or "operations" | ||
:Permissions Required: SERVER:READ, SERVER:CREATE, SERVER-CAPABILITY:READ, SERVER-CAPABILITY:CREATE | ||
:Response Type: Object | ||
|
||
Request Structure | ||
----------------- | ||
:serverIds: List of :term:`Server` ids (integral, unique identifier) associated with a :term:`Server Capability` | ||
:serverCapabilities: List of :term:`Server Capability` names to associate with a :term:`Server` id | ||
:pageType: To determine which configuration (server or server capabilities) is requesting association. Only two values are permitted: `server` or `sc` (short for server capability). If `server` is chosen, it implies that multiple server capabilities are to be associated with a given server id. If `sc` is chosen, it implies that multiple server ids are to be associated with a given server capability. | ||
|
||
.. code-block:: http | ||
:caption: Request Example1 | ||
POST /api/4.1/multiple_servers_capabilities/ HTTP/1.1 | ||
Host: trafficops.infra.ciab.test | ||
User-Agent: curl/7.47.0 | ||
Accept: */* | ||
Cookie: mojolicious=... | ||
Content-Length: 84 | ||
Content-Type: application/json | ||
{ | ||
"serverIds": [1], | ||
"serverCapabilities": ["test", "disk"] | ||
"pageType": "server" | ||
} | ||
.. code-block:: http | ||
:caption: Request Example2 | ||
POST /api/4.1/multiple_servers_capabilities/ HTTP/1.1 | ||
Host: trafficops.infra.ciab.test | ||
User-Agent: curl/7.47.0 | ||
Accept: */* | ||
Cookie: mojolicious=... | ||
Content-Length: 84 | ||
Content-Type: application/json | ||
{ | ||
"serverIds": [2, 3] | ||
"serverCapabilities": ["eas"], | ||
"pageType": "sc" | ||
} | ||
Response Structure | ||
------------------ | ||
:serverId: List of :term:`Server` ids (integral, unique identifier) associated with a server capability. | ||
:serverCapabilities: List of :term:`Server Capability` names to be associated with a :term:`Server` id. | ||
|
||
.. code-block:: http | ||
:caption: Response Example1 | ||
HTTP/1.1 200 OK | ||
Access-Control-Allow-Credentials: true | ||
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Set-Cookie, Cookie | ||
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE | ||
Access-Control-Allow-Origin: * | ||
Content-Type: application/json | ||
Set-Cookie: mojolicious=...; Path=/; Expires=Mon, 8 Aug 2022 22:40:54 GMT; Max-Age=3600; HttpOnly | ||
Whole-Content-Sha512: eQrl48zWids0kDpfCYmmtYMpegjnFxfOVvlBYxxLSfp7P7p6oWX4uiC+/Cfh2X9i3G+MQ36eH95gukJqOBOGbQ== | ||
X-Server-Name: traffic_ops_golang/ | ||
Date: Mon, 08 Aug 2022 16:15:11 GMT | ||
Content-Length: 157 | ||
{ | ||
"alerts": [{ | ||
"text": "Multiple Server Capabilities assigned to a server", | ||
"level": "success" | ||
}], | ||
"response": { | ||
"serverIds": [1], | ||
"serverCapabilities": ["test", "disk"] | ||
} | ||
} | ||
.. code-block:: http | ||
:caption: Response Example2 | ||
HTTP/1.1 200 OK | ||
Access-Control-Allow-Credentials: true | ||
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Set-Cookie, Cookie | ||
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE | ||
Access-Control-Allow-Origin: * | ||
Content-Type: application/json | ||
Set-Cookie: mojolicious=...; Path=/; Expires=Mon, 8 Aug 2022 22:40:54 GMT; Max-Age=3600; HttpOnly | ||
Whole-Content-Sha512: eQrl48zWids0kDpfCYmmtYMpegjnFxfOVvlBYxxLSfp7P7p6oWX4uiC+/Cfh2X9i3G+MQ36eH95gukJqOBOGbQ== | ||
X-Server-Name: traffic_ops_golang/ | ||
Date: Mon, 08 Aug 2022 16:15:11 GMT | ||
Content-Length: 157 | ||
{ | ||
"alerts": [{ | ||
"text": "Multiple Servers assigned to a capability", | ||
"level": "success" | ||
}], | ||
"response": { | ||
"serverIds": [2, 3] | ||
"serverCapabilities": ["eas"], | ||
} | ||
} | ||
``DELETE`` | ||
========== | ||
Deletes a list of :term:`Server Capability` names associated to a server and vice versa i.e. deletes a list of :term:`Server` ids associated to a server capability. | ||
|
||
:Auth. Required: Yes | ||
:Roles Required: "admin" or "operations" | ||
:Permissions Required: SERVER:READ, SERVER:DELETE, SERVER-CAPABILITY:READ, SERVER-CAPABILITY:DELETE | ||
:Response Type: Object | ||
|
||
Request Structure | ||
----------------- | ||
:serverIds: List of :term:`Server` ids (integral, unique identifier) associated with a :term:`Server Capability` | ||
:serverCapabilities: List of :term:`Server Capability` names to associate with a :term:`Server` id | ||
:pageType: To determine which configuration (server or server capabilities) is requesting deletion. Only two values are permitted: `server` or `sc` (short for server capability). If `server` is chosen, it implies that multiple server capabilities are to be deleted for a given server id. If `sc` is chosen, it implies that multiple server ids are to be deleted for a given server capability. | ||
|
||
.. code-block:: http | ||
:caption: Request Example | ||
DELETE /api/4.1/multiple_servers_capabilities/ HTTP/1.1 | ||
Host: trafficops.infra.ciab.test | ||
User-Agent: curl/7.47.0 | ||
Accept: */* | ||
Cookie: mojolicious=... | ||
Content-Length: 84 | ||
Content-Type: application/json | ||
{ | ||
"serverIds": [2, 3] | ||
"serverCapabilities": ["eas"], | ||
"pageType": "sc" | ||
} | ||
Response Structure | ||
------------------ | ||
:serverId: List of :term:`Server` ids (integral, unique identifier) associated with a server capability. | ||
:serverCapabilities: List of :term:`Server Capability` names to be associated with a :term:`Server` id. | ||
|
||
.. code-block:: http | ||
:caption: Response Example | ||
HTTP/1.1 200 OK | ||
Access-Control-Allow-Credentials: true | ||
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Set-Cookie, Cookie | ||
Access-Control-Allow-Methods: POST,GET,OPTIONS,PUT,DELETE | ||
Access-Control-Allow-Origin: * | ||
Content-Type: application/json | ||
Set-Cookie: mojolicious=...; Path=/; Expires=Mon, 8 Aug 2022 22:40:54 GMT; Max-Age=3600; HttpOnly | ||
Whole-Content-Sha512: eQrl48zWids0kDpfCYmmtYMpegjnFxfOVvlBYxxLSfp7P7p6oWX4uiC+/Cfh2X9i3G+MQ36eH95gukJqOBOGbQ== | ||
X-Server-Name: traffic_ops_golang/ | ||
Date: Mon, 08 Aug 2022 16:15:11 GMT | ||
Content-Length: 157 | ||
{ | ||
"alerts": [{ | ||
"text": "Removed multiple servers from capabilities or multiple servers to a capability", | ||
"level": "success" | ||
}], | ||
"response": { | ||
"serverIds": [2, 3] | ||
"serverCapabilities": ["eas"], | ||
} | ||
} | ||
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.