Moti Asayag has uploaded a new change for review. Change subject: engine: Add label column to network ......................................................................
engine: Add label column to network Extending the network table to persist the label entity so it can managed as part of the network entity. Change-Id: I4e3c309cef92e63ebe6f1f48f19f8848e9bceb70 Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java M backend/manager/modules/dal/src/test/resources/fixtures.xml M packaging/dbscripts/create_views.sql M packaging/dbscripts/network_sp.sql A packaging/dbscripts/upgrade/03_04_0300_add_label_column_to_networks.sql 7 files changed, 67 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/34/22634/1 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java index c78cca3..24e1936 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java @@ -102,4 +102,13 @@ * @return the list of networks */ List<Network> getAllForProvider(Guid id); + + /** + * Retrieves all network labels defined on networks in a specific data-center + * + * @param id + * the data-center id + * @return all labels defined for the data-center's networks + */ + List<String> getAllNetworkLabelsForDataCenter(Guid id); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java index e6b41b0..e110322 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java @@ -92,6 +92,13 @@ } @Override + public List<String> getAllNetworkLabelsForDataCenter(Guid id) { + return getCallsHandler().executeReadList("GetAllNetworkLabelsByDataCenterId", + StringRowMapper.instance, + createIdParameterMapper(id)); + } + + @Override protected MapSqlParameterSource createIdParameterMapper(Guid id) { return getCustomMapSqlParameterSource().addValue("id", id); } @@ -115,7 +122,8 @@ .addValue("provider_network_provider_id", network.getProvidedBy() == null ? null : network.getProvidedBy().getProviderId()) .addValue("provider_network_external_id", - network.getProvidedBy() == null ? null : network.getProvidedBy().getExternalId()); + network.getProvidedBy() == null ? null : network.getProvidedBy().getExternalId()) + .addValue("label", network.getLabel()); } @Override @@ -165,6 +173,7 @@ rs.getString("provider_network_external_id"))); } + entity.setLabel(rs.getString("label")); return entity; } @@ -179,4 +188,14 @@ return new Network(); } } + + private static class StringRowMapper implements RowMapper<String> { + public static final StringRowMapper instance = new StringRowMapper(); + + @Override + public String mapRow(ResultSet rs, int rowNum) throws SQLException { + return new String(rs.getString("label")); + } + + } } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java index c5a0477..4a50290 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java @@ -279,6 +279,15 @@ } /** + * Ensures a list of networks labels is returned for a given data-center + */ + public void testGetAllNetworkLabelsForDataCenter() { + List<String> result = dao.getAllNetworkLabelsForDataCenter(datacenter); + assertNotNull(result); + assertFalse(result.isEmpty()); + } + + /** * Ensures that saving a network works as expected. */ @Test diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index 7f2bd49..78735b1 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -856,6 +856,7 @@ <column>vm_network</column> <column>provider_network_provider_id</column> <column>provider_network_external_id</column> + <column>label</column> <row> <value>58d5c1c6-cb15-4832-b2a4-023770607188</value> <value>engine</value> @@ -869,6 +870,7 @@ <value>6d849ebf-755f-4552-ad09-9a090cda105d</value> <value>0</value> <value>true</value> + <null /> <null /> <null /> </row> @@ -887,6 +889,7 @@ <value>true</value> <null /> <null /> + <value>lbl1</value> </row> <row> <value>58d5c1c6-cb15-4832-b2a4-023770607190</value> @@ -903,6 +906,7 @@ <value>true</value> <null /> <null /> + <value>lbl1</value> </row> <row> <value>58d5c1c6-cb15-4832-b2a4-023770607200</value> @@ -919,6 +923,7 @@ <value>true</value> <value>1115c1c6-cb15-4832-b2a4-023770607111</value> <value>52d5c1c6-cb15-4832-b2a4-023770607200</value> + <null/> </row> <row> <value>58d5c1c6-cb15-4832-b2a4-023770607201</value> @@ -935,6 +940,7 @@ <value>true</value> <value>1115c1c6-cb15-4832-b2a4-023770607111</value> <value>52d5c1c6-cb15-4832-b2a4-023770607200</value> + <null/> </row> <row> <value>58d5c1c6-cb15-4832-b2a4-023770607191</value> @@ -951,6 +957,7 @@ <value>true</value> <null /> <null /> + <value>lbl2</value> </row> </table> diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index 253dfc8..e138bfb 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -1165,6 +1165,7 @@ network.storage_pool_id AS storage_pool_id, network.provider_network_provider_id AS provider_network_provider_id, network.provider_network_external_id AS provider_network_external_id, + network.label AS label, storage_pool.name AS storage_pool_name, storage_pool.compatibility_version AS compatibility_version, providers.name AS provider_name diff --git a/packaging/dbscripts/network_sp.sql b/packaging/dbscripts/network_sp.sql index aadfc46..15b4c2e 100644 --- a/packaging/dbscripts/network_sp.sql +++ b/packaging/dbscripts/network_sp.sql @@ -20,12 +20,13 @@ v_mtu INTEGER, v_vm_network BOOLEAN, v_provider_network_provider_id UUID, - v_provider_network_external_id TEXT) + v_provider_network_external_id TEXT, + v_label TEXT) RETURNS VOID AS $procedure$ BEGIN -INSERT INTO network(addr, description, free_text_comment, id, name, subnet, gateway, type, vlan_id, stp, storage_pool_id, mtu, vm_network, provider_network_provider_id, provider_network_external_id) - VALUES(v_addr, v_description, v_free_text_comment, v_id, v_name, v_subnet, v_gateway, v_type, v_vlan_id, v_stp, v_storage_pool_id, v_mtu, v_vm_network, v_provider_network_provider_id, v_provider_network_external_id); +INSERT INTO network(addr, description, free_text_comment, id, name, subnet, gateway, type, vlan_id, stp, storage_pool_id, mtu, vm_network, provider_network_provider_id, provider_network_external_id, label) + VALUES(v_addr, v_description, v_free_text_comment, v_id, v_name, v_subnet, v_gateway, v_type, v_vlan_id, v_stp, v_storage_pool_id, v_mtu, v_vm_network, v_provider_network_provider_id, v_provider_network_external_id, v_label); END; $procedure$ LANGUAGE plpgsql; @@ -46,7 +47,8 @@ v_mtu INTEGER, v_vm_network BOOLEAN, v_provider_network_provider_id UUID, - v_provider_network_external_id TEXT) + v_provider_network_external_id TEXT, + v_label TEXT) RETURNS VOID --The [network] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated @@ -58,7 +60,8 @@ stp = v_stp,storage_pool_id = v_storage_pool_id, mtu = v_mtu, vm_network = v_vm_network, provider_network_provider_id = v_provider_network_provider_id, - provider_network_external_id = v_provider_network_external_id + provider_network_external_id = v_provider_network_external_id, + label = v_label WHERE id = v_id; END; $procedure$ LANGUAGE plpgsql; @@ -184,7 +187,7 @@ DROP TYPE IF EXISTS networkViewClusterType CASCADE; CREATE TYPE networkViewClusterType AS(id uuid,name VARCHAR(50),description VARCHAR(4000), free_text_comment text, type INTEGER, addr VARCHAR(50),subnet VARCHAR(20),gateway VARCHAR(20),vlan_id INTEGER,stp BOOLEAN,storage_pool_id UUID, - mtu INTEGER, vm_network BOOLEAN, + mtu INTEGER, vm_network BOOLEAN, label TEXT, provider_network_provider_id UUID, provider_network_external_id TEXT, network_id UUID,cluster_id UUID, status INTEGER, is_display BOOLEAN, required BOOLEAN, migration BOOLEAN); @@ -207,6 +210,7 @@ network.storage_pool_id, network.mtu, network.vm_network, + network.label, network.provider_network_provider_id, network.provider_network_external_id, network_cluster.network_id, @@ -255,7 +259,16 @@ LANGUAGE plpgsql; - +Create or replace FUNCTION GetAllNetworkLabelsByDataCenterId(v_id UUID) +RETURNS SETOF TEXT +AS $procedure$ +BEGIN + RETURN QUERY + SELECT label as label + FROM network + WHERE network.storage_pool_id = v_id; +END; $procedure$ +LANGUAGE plpgsql; --The GetByFK stored procedure cannot be created because the [network] table doesn't have at least one foreign key column or the foreign keys are also primary keys. diff --git a/packaging/dbscripts/upgrade/03_04_0300_add_label_column_to_networks.sql b/packaging/dbscripts/upgrade/03_04_0300_add_label_column_to_networks.sql new file mode 100644 index 0000000..3a62787 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_04_0300_add_label_column_to_networks.sql @@ -0,0 +1 @@ +select fn_db_add_column('network', 'label', 'text'); -- To view, visit http://gerrit.ovirt.org/22634 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4e3c309cef92e63ebe6f1f48f19f8848e9bceb70 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <masa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches