diff --git a/app/models/foreman_kubevirt/kubevirt.rb b/app/models/foreman_kubevirt/kubevirt.rb index ea84f8c..f0c8129 100644 --- a/app/models/foreman_kubevirt/kubevirt.rb +++ b/app/models/foreman_kubevirt/kubevirt.rb @@ -85,13 +85,20 @@ def connection_properties_valid? end def networks - client.networkattachmentdefs.all - rescue StandardError => e + client.networkattachmentdefs.all.map do |network| + namespaced_name = "#{network.namespace}/#{network.name}" + OpenStruct.new(id: namespaced_name, name: namespaced_name) + end + rescue Fog::Kubevirt::Errors::ClientError => e logger.warn("Failed to retrieve network attachments definition from KubeVirt, make sure KubeVirt has CNI provider and NetworkAttachmentDefinition CRD deployed: #{e.message}") [] end + def editable_network_interfaces? + true + end + def find_vm_by_uuid(uuid) super rescue Fog::Kubevirt::Errors::ClientError => e diff --git a/app/views/compute_resources_vms/form/kubevirt/_network.html.erb b/app/views/compute_resources_vms/form/kubevirt/_network.html.erb index c008358..a9bc7a2 100644 --- a/app/views/compute_resources_vms/form/kubevirt/_network.html.erb +++ b/app/views/compute_resources_vms/form/kubevirt/_network.html.erb @@ -9,10 +9,11 @@
'> <%= select_f f, :network, - compute_resource.networks, + (compute_resource.networks + [OpenStruct.new(name: f.object.network, id: f.object.network)]).compact.uniq, :id, :name, {}, + :data => { tags: true }, :disabled => !new_vm || pod, :class => "col-md-3 kubevirt-network", :label => _('Network'), diff --git a/test/models/compute_resources/kubevirt_test.rb b/test/models/compute_resources/kubevirt_test.rb index 0a76d50..1805644 100644 --- a/test/models/compute_resources/kubevirt_test.rb +++ b/test/models/compute_resources/kubevirt_test.rb @@ -61,14 +61,15 @@ def new_kubevirt_vcr compute_resource = FactoryBot.build(:compute_resource_kubevirt) res = compute_resource.networks assert_equal 1, res.count - assert_equal '0e35b868-2464-11e9-93b4-525400c5a686', res.first.uid + assert_equal 'default/ovs-foreman', res.first.id + assert_equal 'default/ovs-foreman', res.first.name end test "in case of exception, returns an empty array" do compute_resource = FactoryBot.build(:compute_resource_kubevirt) client = stub compute_resource.stubs(:client).returns(client) - client.stubs(:networkattachmentdefs).raises("exception") + client.stubs(:networkattachmentdefs).raises(Fog::Kubevirt::Errors::ClientError) res = compute_resource.networks assert_equal 0, res.count end