BE: Update GraphQL API to list Network Policies
Why are we doing this work
We want to be able to list Network Policies defined in the cluster through GraphQL API to allow users to see policies easily.
This new field in project
should have fields:
-
name
string, -
namespace
string, -
enabled
boolean, -
fromAutoDevops
boolean, -
yaml
string -
updatedAt
timestamp
Example:
{
"data": {
"project": {
"networkPolicies": {
"nodes": [
{
"name": "drop-outbound",
"namespace": "network-policy-demo-cluster-management-5000174-production",
"updatedAt": "2021-03-18T17:22:32+00:00",
"yaml": "---\napiVersion: cilium.io/v2\nkind: CiliumNetworkPolicy\nmetadata:\n name: drop-outbound\n namespace: network-policy-demo-cluster-management-5000174-production\n resourceVersion: '273830'\nspec:\n endpointSelector: {}\n egress:\n - {}\n",
"fromAutodevops": false,
"enabled": true
},
...
]
}
}
}
}
This is important to simplify frontend work in Policies list view.
Relevant links
Non-functional requirements
-
Documentation: add GraphQL documentation for new fields, - [-] Feature flag:,
- [-] Performance:
-
Testing:
Implementation plan
-
backend prepare NetworkPolicyResolver
that willNetworkPolicies::ResourcesService
service to fetch policies from the cluster repository and provide them in the format acceptable by GraphQL type, -
backend add new field to ProjectType
(ee
only):networkPolicies
as[NetworkPolicyType]
(null: false, resolver: ::Resolvers::NetworkPolicyResolver
) with fields:-
name
GraphQL::STRING_TYPE, null: false
, -
namespace
GraphQL::STRING_TYPE, null: false
, -
enabled
GraphQL::BOOLEAN_TYPE, null: false, -
fromAutoDevops
GraphQL::BOOLEAN_TYPE, null: false, -
yaml
GraphQL::STRING_TYPE, null: false
, -
updatedAt
Types::TimeType, null: false
-
Edited by Alan (Maciej) Paruszewski