mirror of
https://github.com/k8sgpt-ai/k8sgpt.git
synced 2025-09-07 02:01:39 +00:00
feat: get official field doc (#457)
* fix(deps): update module github.com/aws/aws-sdk-go to v1.44.267 (#451) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * feat: get official field doc Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * feat: use schema from server Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * feat: add configuration api route (#459) * feat: add configuration api route Signed-off-by: Matthis Holleville <matthish29@gmail.com> * feat: rename cache methods Signed-off-by: Matthis Holleville <matthish29@gmail.com> --------- Signed-off-by: Matthis Holleville <matthish29@gmail.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix(deps): update module github.com/aws/aws-sdk-go to v1.44.269 (#458) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix: updated list.go to handle k8sgpt cache list crashing issue (#455) * Update list.go Signed-off-by: Krishna Dutt Panchagnula <krishnadutt123@gmail.com> * fix: updated list.go to handle k8sgpt cache list crashing issue Signed-off-by: Krishna Dutt Panchagnula <krishnadutt123@gmail.com> --------- Signed-off-by: Krishna Dutt Panchagnula <krishnadutt123@gmail.com> Co-authored-by: Alex Jones <alexsimonjones@gmail.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * chore(main): release 0.3.5 (#452) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * chore(deps): update google-github-actions/release-please-action digest to 51ee8ae (#464) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix: name of sa reference in deployment (#468) Signed-off-by: Johannes Kleinlercher <johannes@kleinlercher.at> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix(deps): update module github.com/aws/aws-sdk-go to v1.44.270 (#465) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix: typo (#463) Signed-off-by: Rakshit Gondwal <rakshitgondwal3@gmail.com> Co-authored-by: Thomas Schuetz <38893055+thschue@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix(deps): update module github.com/aws/aws-sdk-go to v1.44.271 (#469) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix(deps): update module github.com/aws/aws-sdk-go to v1.44.269 (#458) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update module github.com/aws/aws-sdk-go to v1.44.270 (#465) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * fix(deps): update module github.com/aws/aws-sdk-go to v1.44.271 (#469) Signed-off-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * feat: Add with-doc flag to enable/disable kubernetes doc Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * use fmt.Sprintf in apireference.go Signed-off-by: David Sabatie <david.sabatie@notrenet.com> * add --with-doc to readme Signed-off-by: David Sabatie <david.sabatie@notrenet.com> --------- Signed-off-by: Renovate Bot <bot@renovateapp.com> Signed-off-by: David Sabatie <david.sabatie@notrenet.com> Signed-off-by: Matthis Holleville <matthish29@gmail.com> Signed-off-by: Krishna Dutt Panchagnula <krishnadutt123@gmail.com> Signed-off-by: Johannes Kleinlercher <johannes@kleinlercher.at> Signed-off-by: Rakshit Gondwal <rakshitgondwal3@gmail.com> Signed-off-by: golgoth31 <golgoth31@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Matthis <99146727+matthisholleville@users.noreply.github.com> Co-authored-by: Krishna Dutt Panchagnula <krishnadutt123@gmail.com> Co-authored-by: Alex Jones <alexsimonjones@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Johannes Kleinlercher <johannes@kleinlercher.at> Co-authored-by: Rakshit Gondwal <98955085+rakshitgondwal@users.noreply.github.com> Co-authored-by: Thomas Schuetz <38893055+thschue@users.noreply.github.com>
This commit is contained in:
70
pkg/kubernetes/apireference.go
Normal file
70
pkg/kubernetes/apireference.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package kubernetes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
openapi_v2 "github.com/google/gnostic/openapiv2"
|
||||
)
|
||||
|
||||
func (k *K8sApiReference) GetApiDocV2(field string) string {
|
||||
startPoint := ""
|
||||
// the path must be formated like "path1.path2.path3"
|
||||
paths := strings.Split(field, ".")
|
||||
group := strings.Split(k.ApiVersion.Group, ".")
|
||||
definitions := k.OpenapiSchema.GetDefinitions().GetAdditionalProperties()
|
||||
|
||||
// extract the startpoint by searching the highest leaf corresponding to the requested group qnd kind
|
||||
for _, prop := range definitions {
|
||||
if strings.HasSuffix(prop.GetName(), fmt.Sprintf("%s.%s.%s", group[0], k.ApiVersion.Version, k.Kind)) {
|
||||
startPoint = prop.GetName()
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// recursively parse the definitions to find the description of the latest part of the given path
|
||||
description := k.recursePath(definitions, startPoint, paths)
|
||||
|
||||
return description
|
||||
}
|
||||
|
||||
func (k *K8sApiReference) recursePath(definitions []*openapi_v2.NamedSchema, leaf string, paths []string) string {
|
||||
description := ""
|
||||
|
||||
for _, prop := range definitions {
|
||||
// search the requested leaf
|
||||
if prop.GetName() == leaf {
|
||||
for _, addProp := range prop.GetValue().GetProperties().GetAdditionalProperties() {
|
||||
// search the additional property of the leaf corresponding the current path
|
||||
if addProp.GetName() == paths[0] {
|
||||
// the last path or the path is string, we get the description and we go out
|
||||
if len(paths) == 1 || addProp.GetValue().GetType().String() == "value:\"string\"" {
|
||||
// extract the path description as we are at the end of the paths
|
||||
description = addProp.GetValue().Description
|
||||
} else {
|
||||
// the path is an object, we extract the xref
|
||||
if addProp.GetValue().GetXRef() != "" {
|
||||
splitRef := strings.Split(addProp.GetValue().GetXRef(), "/")
|
||||
reducedPaths := paths[1:]
|
||||
description = k.recursePath(definitions, splitRef[len(splitRef)-1], reducedPaths)
|
||||
}
|
||||
|
||||
// the path is an array, we take the first xref from the items
|
||||
if len(addProp.GetValue().GetItems().GetSchema()) == 1 {
|
||||
splitRef := strings.Split(addProp.GetValue().GetItems().GetSchema()[0].GetXRef(), "/")
|
||||
reducedPaths := paths[1:]
|
||||
description = k.recursePath(definitions, splitRef[len(splitRef)-1], reducedPaths)
|
||||
}
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return description
|
||||
}
|
Reference in New Issue
Block a user