Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add annotations to container summary pages #530

Merged
merged 1 commit into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ def parse_node(node)

labels = parse_labels(node)
tags = map_labels('ContainerNode', labels)
annotations = parse_annotations(node)

new_result.merge!(
:identity_infra => node.spec.providerID,
Expand Down Expand Up @@ -360,7 +361,7 @@ def parse_node(node)

container_conditions(container_node, container_conditions)
node_computer_systems(container_node, computer_system)
custom_attributes(container_node, :labels => labels)
custom_attributes(container_node, :labels => labels, :annotations => annotations)
taggings(container_node, tags)

container_node
Expand Down Expand Up @@ -398,9 +399,10 @@ def parse_service(service)
# Typically this happens for kubernetes services
new_result[:ems_ref] = "#{new_result[:namespace]}_#{new_result[:name]}" if new_result[:ems_ref].nil?

labels = parse_labels(service)
tags = map_labels('ContainerService', labels)
selector_parts = parse_selector_parts(service)
labels = parse_labels(service)
tags = map_labels('ContainerService', labels)
selector_parts = parse_selector_parts(service)
annotations = parse_annotations(service)

new_result.merge!(
:container_project => lazy_find_project(:name => new_result[:namespace]),
Expand Down Expand Up @@ -429,7 +431,7 @@ def parse_service(service)
container_service = persister.container_services.build(new_result)

container_service_port_configs(container_service, container_service_port_configs)
custom_attributes(container_service, :labels => labels, :selectors => selector_parts)
custom_attributes(container_service, :labels => labels, :selectors => selector_parts, :annotations => annotations)
taggings(container_service, tags)

container_service
Expand Down Expand Up @@ -496,6 +498,7 @@ def parse_pod(pod)

labels = parse_labels(pod)
tags = map_labels('ContainerGroup', labels)
annotations = parse_annotations(pod)

node_selector_parts = parse_node_selector_parts(pod)
container_volumes = parse_volumes(pod)
Expand All @@ -505,7 +508,7 @@ def parse_pod(pod)
containers(container_group, containers)
container_conditions(container_group, container_conditions)
container_volumes(container_group, container_volumes)
custom_attributes(container_group, :labels => labels, :node_selectors => node_selector_parts)
custom_attributes(container_group, :labels => labels, :node_selectors => node_selector_parts, :annotations => annotations)
taggings(container_group, tags)

container_group
Expand Down Expand Up @@ -740,6 +743,10 @@ def parse_labels(entity)
parse_identifying_attributes(entity.metadata.labels, 'labels')
end

def parse_annotations(entity)
parse_identifying_attributes(entity.metadata.annotations, 'annotations')
end

def parse_selector_parts(entity)
parse_identifying_attributes(entity.spec.selector, 'selectors')
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,23 +58,23 @@ def initialize_container_conditions
def initialize_custom_attributes
%i(container_nodes
container_projects).each do |name|
add_custom_attributes(name, %w(labels additional_attributes))
add_custom_attributes(name, %w(labels additional_attributes annotations))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe these have to be defined as associations on these models, e.g. https://github.com/ManageIQ/manageiq/blob/master/app/models/container_node.rb#L26-L33

end

%i(container_groups).each do |name|
add_custom_attributes(name, %w(labels node_selectors))
add_custom_attributes(name, %w(labels node_selectors annotations))
end

%i(container_replicators
container_services).each do |name|
add_custom_attributes(name, %w(labels selectors))
add_custom_attributes(name, %w(labels selectors annotations))
end

%i(container_builds
container_build_pods
container_routes
container_templates).each do |name|
add_custom_attributes(name, %w(labels))
add_custom_attributes(name, %w(labels annotations))
end
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ def assert_specific_container_group(expected_extra_tags: [])
:dns_policy => "ClusterFirst",
:phase => "Running"
)
expect(@containergroup.annotations).to contain_exactly(
annotation_with_name("kubernetes.io/created-by")
)
expect(@containergroup.labels).to contain_exactly(
label_with_name_value("name", "heapster")
)
Expand Down Expand Up @@ -407,6 +410,14 @@ def label_with_name_value(name, value)
)
end

def annotation_with_name(name)
have_attributes(
:section => 'annotations',
:source => 'kubernetes',
:name => name
)
end

def tag_in_category_with_description(category, description)
satisfy { |tag| tag.category == category && tag.classification.description == description }
end
Expand Down
Loading