Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
1105 Внедрение механизмов обеспечения безопасности цепочки поставки программных проектов
Legacy
scanned-projects
helm
Commits
3458ad8e
Commit
3458ad8e
authored
7 years ago
by
devinyan
Browse files
Options
Download
Patches
Plain Diff
Add the status of pod when using "Helm status" command
parent
a2323f86
main
Release
add-codeql
dependabot/go_modules/github.com/docker/distribution-2.8.2incompatible
dependabot/go_modules/github.com/lib/pq-1.10.9
dependabot/go_modules/github.com/rubenv/sql-migrate-1.4.0
dependabot/go_modules/golang.org/x/crypto-0.9.0
dependabot/go_modules/golang.org/x/term-0.8.0
dependabot/go_modules/k8s.io/klog/v2-2.100.1
dev-v2
feat-v3/event-emitter-lua
release-2.10
release-2.11
release-2.12
release-2.13
release-2.14
release-2.15
release-2.16
release-2.17
release-2.7
release-2.8
release-2.9
release-3.0
release-3.1
release-3.10
release-3.11
release-3.12
release-3.2
release-3.3
release-3.4
release-3.5
release-3.6
release-3.6.1
release-3.6.2
release-3.7
release-3.8
release-3.9
release-v3.0.0-beta.4
v3.12.0
v3.12.0-rc.1
v3.12.0-dev.1
v3.11.3
v3.11.2
v3.11.1
v3.11.0
v3.11.0-rc.2
v3.11.0-rc.1
v3.10.3
v3.10.2
v3.10.1
v3.10.0
v3.10.0-rc.1
v3.9.4
v3.9.3
v3.9.2
v3.9.1
v3.9.0
v3.9.0-rc.1
v3.8.2
v3.8.1
v3.8.0
v3.8.0-rc.2
v3.8.0-rc.1
v3.7.2
v3.7.1
v3.7.0
v3.7.0-rc.3
v3.7.0-rc.2
v3.7.0-rc.1
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.6.0-rc.1
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.5.0-rc.2
v3.5.0-rc.1
v3.4.2
v3.4.1
v3.4.0
v3.4.0-rc.1
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.3.0-rc.2
v3.3.0-rc.1
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.2.0-rc.1
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.1.0-rc.3
v3.1.0-rc.2
v3.1.0-rc.1
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0-rc.4
v3.0.0-rc.3
v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-beta.5
v3.0.0-beta.4
v3.0.0-beta.3
v3.0.0-beta.2
v3.0.0-beta.1
v3.0.0-alpha.2
v3.0.0-alpha.1
v2.17.0
v2.17.0-rc.1
v2.16.12
v2.16.11
v2.16.10
v2.16.9
v2.16.8
v2.16.7
v2.16.6
v2.16.5
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.16.0
v2.16.0-rc.2
v2.16.0-rc.1
v2.15.2
v2.15.1
v2.15.0
v2.15.0-rc.2
v2.15.0-rc.1
v2.14.3
v2.14.2
v2.14.1
v2.14.0
v2.14.0-rc.2
v2.14.0-rc.1
v2.13.1
v2.13.1-rc.1
v2.13.0
v2.13.0-rc.2
v2.13.0-rc.1
v2.12.3
v2.12.2
v2.12.1
v2.12.0
v2.12.0-rc.2
v2.12.0-rc.1
v2.11.0
v2.11.0-rc.4
v2.11.0-rc.3
v2.11.0-rc.2
v2.11.0-rc.1
v2.10.0
v2.10.0-rc.3
v2.10.0-rc.2
v2.10.0-rc.1
v2.9.1
v2.9.0
v2.9.0-rc5
v2.9.0-rc4
v2.9.0-rc3
v2.9.0-rc2
v2.9.0-rc1
v2.8.2
v2.8.2-rc1
v2.8.1
v2.8.0
v2.8.0-rc.1
v2.7.2
v2.7.1
v2.7.0
v2.7.0-rc1
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
pkg/kube/client.go
+81
-0
pkg/kube/client.go
with
81 additions
and
0 deletions
+81
-0
pkg/kube/client.go
+
81
−
0
View file @
3458ad8e
...
@@ -157,6 +157,9 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
...
@@ -157,6 +157,9 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
var
objPods
=
make
(
map
[
string
][]
api
.
Pod
)
missing
:=
[]
string
{}
missing
:=
[]
string
{}
err
=
perform
(
infos
,
func
(
info
*
resource
.
Info
)
error
{
err
=
perform
(
infos
,
func
(
info
*
resource
.
Info
)
error
{
c
.
Log
(
"Doing get for %s: %q"
,
info
.
Mapping
.
GroupVersionKind
.
Kind
,
info
.
Name
)
c
.
Log
(
"Doing get for %s: %q"
,
info
.
Mapping
.
GroupVersionKind
.
Kind
,
info
.
Name
)
...
@@ -171,12 +174,26 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
...
@@ -171,12 +174,26 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
gvk
:=
info
.
ResourceMapping
()
.
GroupVersionKind
gvk
:=
info
.
ResourceMapping
()
.
GroupVersionKind
vk
:=
gvk
.
Version
+
"/"
+
gvk
.
Kind
vk
:=
gvk
.
Version
+
"/"
+
gvk
.
Kind
objs
[
vk
]
=
append
(
objs
[
vk
],
info
.
Object
)
objs
[
vk
]
=
append
(
objs
[
vk
],
info
.
Object
)
//Get the relation pods
objPods
,
err
=
c
.
getSelectRelationPod
(
info
,
objPods
)
if
err
!=
nil
{
c
.
Log
(
"Warning: get the relation pod is failed, err:%s"
,
err
.
Error
())
}
return
nil
return
nil
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
//here, we will add the objPods to the objs
for
key
,
podItems
:=
range
objPods
{
for
i
:=
range
podItems
{
objs
[
key
+
"(related)"
]
=
append
(
objs
[
key
+
"(related)"
],
&
podItems
[
i
])
}
}
// Ok, now we have all the objects grouped by types (say, by v1/Pod, v1/Service, etc.), so
// Ok, now we have all the objects grouped by types (say, by v1/Pod, v1/Service, etc.), so
// spin through them and print them. Printer is cool since it prints the header only when
// spin through them and print them. Printer is cool since it prints the header only when
// an object type changes, so we can just rely on that. Problem is it doesn't seem to keep
// an object type changes, so we can just rely on that. Problem is it doesn't seem to keep
...
@@ -628,3 +645,67 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
...
@@ -628,3 +645,67 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
return
err
return
err
}
}
//get an kubernetes resources's relation pods
// kubernetes resource used select labels to relate pods
func
(
c
*
Client
)
getSelectRelationPod
(
info
*
resource
.
Info
,
objPods
map
[
string
][]
api
.
Pod
)
(
map
[
string
][]
api
.
Pod
,
error
)
{
if
info
==
nil
{
return
objPods
,
nil
}
c
.
Log
(
"get relation pod of object: %s/%s/%s"
,
info
.
Namespace
,
info
.
Mapping
.
GroupVersionKind
.
Kind
,
info
.
Name
)
versioned
,
err
:=
c
.
AsVersionedObject
(
info
.
Object
)
if
runtime
.
IsNotRegisteredError
(
err
)
{
return
objPods
,
nil
}
if
err
!=
nil
{
return
objPods
,
err
}
// We can ignore this error because it will only error if it isn't a type that doesn't
// have pods. In that case, we don't care
selector
,
_
:=
getSelectorFromObject
(
versioned
)
selectorString
:=
labels
.
Set
(
selector
)
.
AsSelector
()
.
String
()
// If we have an empty selector, this likely is a service or config map, so bail out now
if
selectorString
==
""
{
return
objPods
,
nil
}
client
,
_
:=
c
.
ClientSet
()
pods
,
err
:=
client
.
Core
()
.
Pods
(
info
.
Namespace
)
.
List
(
metav1
.
ListOptions
{
FieldSelector
:
fields
.
Everything
()
.
String
(),
LabelSelector
:
labels
.
Set
(
selector
)
.
AsSelector
()
.
String
(),
})
if
err
!=
nil
{
return
objPods
,
err
}
for
_
,
pod
:=
range
pods
.
Items
{
if
pod
.
APIVersion
==
""
{
pod
.
APIVersion
=
"v1"
}
if
pod
.
Kind
==
""
{
pod
.
Kind
=
"Pod"
}
vk
:=
pod
.
GroupVersionKind
()
.
Version
+
"/"
+
pod
.
GroupVersionKind
()
.
Kind
if
!
isFoundPod
(
objPods
[
vk
],
pod
)
{
objPods
[
vk
]
=
append
(
objPods
[
vk
],
pod
)
}
}
return
objPods
,
nil
}
func
isFoundPod
(
podItem
[]
api
.
Pod
,
pod
api
.
Pod
)
bool
{
for
_
,
value
:=
range
podItem
{
if
(
value
.
Namespace
==
pod
.
Namespace
)
&&
(
value
.
Name
==
pod
.
Name
)
{
return
true
}
}
return
false
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets