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