ofri masad has uploaded a new change for review.

Change subject: [WIP] core: Add vnic profiles to DB and entities
......................................................................

[WIP] core: Add vnic profiles to DB and entities

Add vnic profiles to the DB and create the business entities.

see: http://wiki.ovirt.org/Features/Design/Network_QoS

Change-Id: Id0525a6d30995fe896499fed283638b93cae5e41
Bug-Url: https://bugzilla.redhat.com/514420
Signed-off-by: Ofri Masad <[email protected]>
---
M backend/manager/dbscripts/create_tables.sql
M backend/manager/dbscripts/create_views.sql
M backend/manager/dbscripts/network_sp.sql
A backend/manager/dbscripts/upgrade/03_03_0200_add_profile_to_network_interface
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterfaceProfile.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
A 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDao.java
A 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoImpl.java
A 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoTest.java
9 files changed, 337 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/15992/1

diff --git a/backend/manager/dbscripts/create_tables.sql 
b/backend/manager/dbscripts/create_tables.sql
index ae82de7..aabe032 100644
--- a/backend/manager/dbscripts/create_tables.sql
+++ b/backend/manager/dbscripts/create_tables.sql
@@ -1144,6 +1144,21 @@
 WITH OIDS;
 
 -- ----------------------------------------------------------------------
+--  table vnic_profiles
+-- ----------------------------------------------------------------------
+
+
+CREATE TABLE vnic_profiles
+(
+  id UUID NOT NULL,
+  profile_name VARCHAR(50) NOT NULL,
+  network_id UUID NOT NULL,
+  network_name VARCHAR(50) NOT NULL,
+  port_mirroring BOOLEAN NOT NULL,
+  custom_properties TEXT,
+  CONSTRAINT PK_id PRIMARY KEY (id),
+) WITH OIDS;
+-- ----------------------------------------------------------------------
 -- Foreign key constraints
 -- ----------------------------------------------------------------------
 ALTER TABLE tags_user_group_map ADD CONSTRAINT tags_user_group_map_tag
@@ -1331,6 +1346,13 @@
 ALTER TABLE permissions ADD  CONSTRAINT fk_permissions_roles FOREIGN 
KEY(role_id)
 REFERENCES roles(id) ON DELETE CASCADE;
 
+ALTER TABLE vnic_profiles ADD CONSTRAINT FK_vnic_profiles_network_id FOREIGN 
KEY(network_id)
+REFERENCES network(id) ON DELETE SET NULL;
+
+ALTER TABLE vnic_profiles ADD CONSTRAINT FK_vnic_profiles_network_name FOREIGN 
KEY(network_name)
+REFERENCES network(name);
+
+
 CREATE INDEX IDX_permissions_ad_element_id
 ON permissions
 (ad_element_id);
diff --git a/backend/manager/dbscripts/create_views.sql 
b/backend/manager/dbscripts/create_views.sql
index 39bd405..c64d47b 100644
--- a/backend/manager/dbscripts/create_views.sql
+++ b/backend/manager/dbscripts/create_views.sql
@@ -1112,6 +1112,15 @@
 FROM network
 INNER JOIN storage_pool ON network.storage_pool_id = storage_pool.id;
 
+CREATE OR REPLACE VIEW vm_interface_profile_view
+AS
+SELECT vnic_profiles.id AS id,
+   vnic_profiles.profile_name AS profile_name,
+   vnic_profiles.network_id AS network_id,
+   vnic_profiles.network_name AS network_name,
+   vnic_profiles.port_mirroring AS port_mirroring,
+   vnic_profiles.custom_properties AS custom_properties,
+FROM vnic_profiles;
 ----------------------------------------------
 -- Query Permissions
 ----------------------------------------------
diff --git a/backend/manager/dbscripts/network_sp.sql 
b/backend/manager/dbscripts/network_sp.sql
index ee2c3db..34b3b43 100644
--- a/backend/manager/dbscripts/network_sp.sql
+++ b/backend/manager/dbscripts/network_sp.sql
@@ -972,3 +972,95 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+
+----------------------------------------------------------------------
+--  VNIC interface
+----------------------------------------------------------------------
+
+Create or replace FUNCTION Get_vm_interface_profile_by_id(v_id UUID)
+RETURNS vnic_profiles
+   AS $procedure$
+BEGIN
+
+   RETURN QUERY SELECT *
+   FROM vnic_profiles
+   WHERE id = v_id;
+
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+Create or replace FUNCTION Insert_vm_interface_profile(v_id UUID,
+  v_profile_name VARCHAR(50),
+  v_network_id UUID,
+  v_network_name VARCHAR(50),
+  v_port_mirroring BOOLEAN,
+  v_custom_properties TEXT)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+
+   INSERT INTO vnic_profiles(id, profile_name, network_id, network_name, 
port_mirroring, custom_properties)
+       VALUES(v_id, v_profile_name, v_network_id, v_network_name, 
v_port_mirroring, v_custom_properties);
+
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+Create or replace FUNCTION Update_vm_interface_profile(v_id UUID,
+  v_profile_name VARCHAR(50),
+  v_network_id UUID,
+  v_network_name VARCHAR(50),
+  v_port_mirroring BOOLEAN,
+  v_custom_properties TEXT)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+
+   UPDATE vnic_profiles
+   SET id = v_id, profile_name = v_profile_name, network_id = v_network_id, 
network_name = v_network_name,
+   port_mirroring = v_port_mirroring, custom_properties = v_custom_properties
+   WHERE id = v_id;
+
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+Create or replace FUNCTION Delete_vm_interface_profile(v_id UUID)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+
+   DELETE FROM vnic_profiles
+   WHERE id = v_id;
+
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+Create or replace FUNCTION Get_all_vm_interface_profiles()
+RETURNS SETOF vnic_profiles
+   AS $procedure$
+BEGIN
+
+   RETURN QUERY SELECT *
+   FROM vnic_profiles;
+
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+Create or replace FUNCTION 
Get_all_vm_interfaces_profiles_by_network_id(v_network_id)
+RETURNS SETOF vnic_profiles
+   AS $procedure$
+BEGIN
+
+   RETURN QUERY SELECT *
+   FROM vnic_profiles
+   WHERE network_id = v_network_id;
+
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+
diff --git 
a/backend/manager/dbscripts/upgrade/03_03_0200_add_profile_to_network_interface 
b/backend/manager/dbscripts/upgrade/03_03_0200_add_profile_to_network_interface
new file mode 100644
index 0000000..ff4682a
--- /dev/null
+++ 
b/backend/manager/dbscripts/upgrade/03_03_0200_add_profile_to_network_interface
@@ -0,0 +1,9 @@
+--Add vnic_profile id and name into vm_interface
+SELECT fn_db_add_column('vm_interface', 'vnic_profile_id', 'UUID NOT NULL');
+SELECT fn_db_add_column('vm_interface', 'vnic_profile_name', 'VARCHAR(50) NOT 
NULL');
+
+ALTER TABLE vm_interface ADD CONSTRAINT FK_vm_interface_vnic_profile_id 
FOREIGN KEY(vnic_profile_id)
+REFERENCES vnic_profiles(id);
+
+ALTER TABLE vm_interface ADD CONSTRAINT FK_vm_interface_vnic_profile_name 
FOREIGN KEY(vnic_profile_name)
+REFERENCES vnic_profiles(profile_name);
\ No newline at end of file
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterfaceProfile.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterfaceProfile.java
new file mode 100644
index 0000000..c9036ba
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VmNetworkInterfaceProfile.java
@@ -0,0 +1,79 @@
+package org.ovirt.engine.core.common.businessentities.network;
+
+import org.ovirt.engine.core.common.businessentities.BusinessEntity;
+import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
+import org.ovirt.engine.core.common.businessentities.Nameable;
+import org.ovirt.engine.core.compat.Guid;
+
+import java.io.Serializable;
+
+public class VmNetworkInterfaceProfile extends IVdcQueryable implements 
Serializable, BusinessEntity<Guid>, Nameable {
+
+    private String name;
+    private Guid id;
+    private Network network;
+    private Guid networkId;
+    private String networkName;
+    private boolean portMirroringEnabled;
+    private String customProperties;
+
+
+    @Override
+    public Guid getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Guid id) {
+        this.id = id;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public boolean isPortMirroringEnabled() {
+        return portMirroringEnabled;
+    }
+
+    public void setPortMirroringEnabled(boolean portMirroringEnabled) {
+        this.portMirroringEnabled = portMirroringEnabled;
+    }
+
+    public String getCustomProperties() {
+        return customProperties;
+    }
+
+    public void setCustomProperties(String customProperties) {
+        this.customProperties = customProperties;
+    }
+
+    public Network getNetwork() {
+        return network;
+    }
+
+    public void setNetwork(Network network) {
+        this.network = network;
+    }
+
+    public Guid getNetworkId() {
+        return networkId;
+    }
+
+    public void setNetworkId(Guid networkId) {
+        this.networkId = networkId;
+    }
+
+    public String getNetworkName() {
+        return networkName;
+    }
+
+    public void setNetworkName(String networkName) {
+        this.networkName = networkName;
+    }
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
index 7614be3..5038831 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
@@ -106,8 +106,10 @@
 import org.ovirt.engine.core.dao.network.InterfaceDao;
 import org.ovirt.engine.core.dao.network.NetworkClusterDao;
 import org.ovirt.engine.core.dao.network.NetworkDao;
+import org.ovirt.engine.core.dao.network.NetworkQoSDao;
 import org.ovirt.engine.core.dao.network.NetworkViewDao;
 import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao;
+import org.ovirt.engine.core.dao.network.VmNetworkInterfaceProfileDao;
 import org.ovirt.engine.core.dao.network.VmNetworkStatisticsDao;
 import org.ovirt.engine.core.dao.provider.ProviderDao;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
@@ -964,4 +966,22 @@
     public VmGuestAgentInterfaceDao getVmGuestAgentInterfaceDao() {
         return getDao(VmGuestAgentInterfaceDao.class);
     }
+
+    /**
+     * Returns the singleton instance of {@link NetworkQoSDao}.
+     *
+     * @return the dao
+     */
+    public NetworkQoSDao getNetworkQoSDao() {
+        return getDao(NetworkQoSDao.class);
+    }
+
+    /**
+     * Returns the singleton instance of {@link VmNetworkInterfaceProfileDao}.
+     *
+     * @return the dao
+     */
+    public VmNetworkInterfaceProfileDao getVmNetworkInterfaceProfileDao() {
+        return getDao(VmNetworkInterfaceProfileDao.class);
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDao.java
new file mode 100644
index 0000000..386e27d
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDao.java
@@ -0,0 +1,13 @@
+package org.ovirt.engine.core.dao.network;
+
+import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterfaceProfile;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.GenericDao;
+
+import java.util.List;
+
+public interface VmNetworkInterfaceProfileDao extends 
GenericDao<VmNetworkInterfaceProfile, Guid> {
+
+    List<VmNetworkInterfaceProfile> getAllForNetwork(Guid networkId);
+
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoImpl.java
new file mode 100644
index 0000000..f4f97b5
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoImpl.java
@@ -0,0 +1,86 @@
+package org.ovirt.engine.core.dao.network;
+
+import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterfaceProfile;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.BaseDAODbFacade;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+
+public class VmNetworkInterfaceProfileDaoImpl extends BaseDAODbFacade 
implements VmNetworkInterfaceProfileDao {
+
+    protected final RowMapper<VmNetworkInterfaceProfile> mapper =
+            new RowMapper<VmNetworkInterfaceProfile>() {
+                @Override
+                public VmNetworkInterfaceProfile mapRow(ResultSet rs, int 
rowNum)
+                        throws SQLException {
+                    VmNetworkInterfaceProfile entity = new 
VmNetworkInterfaceProfile();
+                    
entity.setId(Guid.createGuidFromString(rs.getString("id")));
+                    entity.setName(rs.getString("profile_name"));
+                    
entity.setNetworkId(Guid.createGuidFromString(rs.getString("network_id")));
+                    entity.setNetworkName(rs.getString("network_name"));
+                    
entity.setCustomProperties(rs.getString("custom_properties"));
+                    
entity.setPortMirroringEnabled(rs.getBoolean("is_plugged"));
+                    return entity;
+                }
+            };
+
+
+    @Override
+    public VmNetworkInterfaceProfile get(Guid id) {
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource().addValue("id", id);
+        return getCallsHandler().executeRead("Get_vm_interface_profile_by_id", 
mapper, parameterSource);//TODO
+    }
+
+    @Override
+    public void save(VmNetworkInterfaceProfile profile) {
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
+                .addValue("id", profile.getId())
+                .addValue("name", profile.getName())
+                .addValue("network_name", profile.getNetworkName())
+                .addValue("network_id", profile.getNetworkId())
+                .addValue("port_mirroring", profile.isPortMirroringEnabled())
+                .addValue("custom_properties", profile.getCustomProperties());
+
+        getCallsHandler().executeModification("Insert_vm_interface_profile", 
parameterSource); //TODO
+
+    }
+
+    @Override
+    public void update(VmNetworkInterfaceProfile profile) {
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
+                .addValue("id", profile.getId())
+                .addValue("name", profile.getName())
+                .addValue("network_name", profile.getNetworkName())
+                .addValue("network_id", profile.getNetworkId())
+                .addValue("port_mirroring", profile.isPortMirroringEnabled())
+                .addValue("custom_properties", profile.getCustomProperties());
+
+        getCallsHandler().executeModification("Update_vm_interface_profile", 
parameterSource); //TODO
+
+    }
+
+    @Override
+    public void remove(Guid id) {
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
+                .addValue("id", id);
+
+        getCallsHandler().executeModification("Delete_vm_interface_profile", 
parameterSource); //TODO
+    }
+
+    @Override
+    public List<VmNetworkInterfaceProfile> getAll() {
+        return 
getCallsHandler().executeReadList("Get_all_vm_interface_profiles", mapper, 
getCustomMapSqlParameterSource());   //TODO
+    }
+
+    @Override
+    public List<VmNetworkInterfaceProfile> getAllForNetwork(Guid networkId) {
+        return 
getCallsHandler().executeReadList("Get_all_vm_interfaces_profiles_by_network_id",
 //TODO
+                mapper, 
getCustomMapSqlParameterSource().addValue("network_id", networkId));
+    }
+}
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoTest.java
new file mode 100644
index 0000000..052bf16
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceProfileDaoTest.java
@@ -0,0 +1,7 @@
+package org.ovirt.engine.core.dao.network;
+
+import org.ovirt.engine.core.dao.BaseDAOTestCase;
+
+
+public class VmNetworkInterfaceProfileDaoTest extends BaseDAOTestCase {
+}


-- 
To view, visit http://gerrit.ovirt.org/15992
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id0525a6d30995fe896499fed283638b93cae5e41
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: ofri masad <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to