Various changes relating to Fedora Linux support. 68/42068/9
authorDariusz Michaluk <d.michaluk@samsung.com>
Mon, 22 Jun 2015 08:59:52 +0000 (10:59 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Tue, 30 Jun 2015 10:58:48 +0000 (03:58 -0700)
[Bug/Feature]   Fix vasum-cli create_zone (add zone template name parameter).
                Default zone template depends on target platform.
                Create zones data directory.
                Add fedora zone template.
[Cause]         N/A
[Solution]      N/A
[Verification]  Build, install, run tests, run daemon,
                create/start/shutdown/destroy zone.

Change-Id: I63b4b6a60c85b826492e13d016f67e489cefb36c

cli/command-line-interface.cpp
cli/main.cpp
packaging/vasum.spec
server/configs/CMakeLists.txt
server/configs/templates/fedora.conf [new file with mode: 0644]
server/configs/templates/template.sh
server/configs/templates/tizen-common-wayland.sh
server/configs/templates/tizen.conf [moved from server/configs/templates/default.conf with 100% similarity]
server/zones-manager.cpp

index 2393ce1..0c28cdd 100644 (file)
@@ -220,7 +220,7 @@ void create_zone(int pos, int argc, const char** argv)
         throw runtime_error("Not enough parameters");
     }
 
-    one_shot(bind(vsm_create_zone, _1, argv[pos + 1], nullptr));
+    one_shot(bind(vsm_create_zone, _1, argv[pos + 1], argv[pos + 2] ? argv[pos + 2] : nullptr));
 }
 
 void destroy_zone(int pos, int argc, const char** argv)
index 6c10945..af36c74 100644 (file)
@@ -47,9 +47,10 @@ std::map<std::string, CommandLineInterface> commands = {
     {
         "create_zone", {
             create_zone,
-            "create_zone zone_id",
+            "create_zone zone_id [zone_tname]",
             "Create and add zone",
-            {{"zone_id", "id zone name"}}
+            {{"zone_id", "id zone name"},
+             {"[zone_tname]", "optional zone template name"}}
         }
     },
     {
index aa6ee22..13112b5 100644 (file)
@@ -86,6 +86,11 @@ make -k %{?jobs:-j%jobs}
 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
 mkdir -p %{buildroot}/%{_datadir}/zones
+%if %{platform_type} == "TIZEN"
+ln -s tizen.conf %{buildroot}/etc/vasum/templates/default.conf
+%else
+ln -s fedora.conf %{buildroot}/etc/vasum/templates/default.conf
+%endif
 
 %clean
 rm -rf %{buildroot}
index c57a806..09254a5 100644 (file)
@@ -43,7 +43,7 @@ CONFIGURE_FILE(dbus-1/system.d/org.tizen.vasum.host.conf.in
 INSTALL(FILES       ${CMAKE_BINARY_DIR}/dbus-1/system.d/org.tizen.vasum.host.conf
         DESTINATION ${SYSCONF_INSTALL_DIR}/dbus-1/system.d/)
 
-INSTALL(DIRECTORY   DESTINATION ${VSM_CONFIG_INSTALL_DIR}/zones) #TODO temporary solution
+INSTALL(DIRECTORY   DESTINATION ${DATA_DIR}/zones)
 
 INSTALL(FILES       ${zone_templates_CONF}
         DESTINATION ${VSM_CONFIG_INSTALL_DIR}/templates)
diff --git a/server/configs/templates/fedora.conf b/server/configs/templates/fedora.conf
new file mode 100644 (file)
index 0000000..3ee2c06
--- /dev/null
@@ -0,0 +1,21 @@
+{
+    "zoneTemplate" : "fedora.sh",
+    "initWithArgs" : [],
+    "requestedState" : "stopped",
+    "ipv4Gateway" : "",
+    "ipv4" : "",
+    "cpuQuotaForeground" : -1,
+    "cpuQuotaBackground" : 1000,
+    "privilege" : 10,
+    "vt" : -1,
+    "shutdownTimeout" : 10,
+    "switchToDefaultAfterTimeout" : true,
+    "runMountPoint" : "~NAME~/run",
+    "provisions" : [],
+    "permittedToSend" : [ "/tmp/.*" ],
+    "permittedToRecv" : [ "/tmp/.*" ],
+    "validLinkPrefixes" : [ "/tmp/",
+                            "/run/",
+                            "/opt/usr/data/",
+                            "/opt/usr/dbsapce/" ]
+}
index 3bcf528..ab6edf7 100755 (executable)
@@ -23,6 +23,7 @@ do
 done
 
 br_name="virbr-${name}"
+broadcast="$(echo $ipv4|cut -d . -f -3).255"
 
 # XXX assume rootfs if mounted from iso
 
@@ -61,10 +62,11 @@ EOF
 # prepare pre start hook
 > ${path}/pre-start.sh
 cat <<EOF >> ${path}/pre-start.sh
-if [ -z "\$(/usr/sbin/ip link show | /bin/grep -P "${br_name}:")" ]
+if ! /usr/sbin/ip link show ${br_name} &>/dev/null
 then
     /usr/sbin/ip link add name ${br_name} type bridge
-    /sbin/ifconfig ${br_name} ${ipv4_gateway} netmask 255.255.255.0 up
+    /usr/sbin/ip link set ${br_name} up
+    /usr/sbin/ip addr add ${ipv4}/24 broadcast ${broadcast} dev ${br_name}
 fi
 if [ -z "\$(/usr/sbin/iptables -t nat -S | /bin/grep MASQUERADE)" ]
 then
index 30b90cd..05cca6d 100755 (executable)
@@ -76,6 +76,7 @@ if [ -z "$path" ]; then
 fi
 
 br_name="virbr-${name}"
+broadcast="$(echo $ipv4|cut -d . -f -3).255"
 
 # Prepare zone rootfs
 ROOTFS_DIRS="\
@@ -279,10 +280,11 @@ EOF
 
 # Prepare zone hook files
 cat <<EOF >>${path}/hooks/pre-start.sh
-if [ -z "\$(/usr/sbin/ip link show | /bin/grep -P "${br_name}:")" ]
+if ! /usr/sbin/ip link show ${br_name} &>/dev/null
 then
     /usr/sbin/ip link add name ${br_name} type bridge
-    /sbin/ifconfig ${br_name} ${ipv4_gateway} netmask 255.255.255.0 up
+    /usr/sbin/ip link set ${br_name} up
+    /usr/sbin/ip addr add ${ipv4}/24 broadcast ${broadcast} dev ${br_name}
 fi
 if [ -z "\$(/usr/sbin/iptables -t nat -S | /bin/grep MASQUERADE)" ]
 then
index a0a0205..ace7ee4 100644 (file)
@@ -1206,20 +1206,22 @@ void ZonesManager::generateNewConfig(const std::string& id,
                                                        ZONE_NAME_REGEX,
                                                        id);
 
-    // generate first free VT number
-    const int freeVT = getVTForNewZone();
-    LOGD("VT number: " << freeVT);
-    dynamicConfig.vt = freeVT;
-
-    // generate third IP octet for network config
-    std::string thirdOctetStr = std::to_string(ZONE_IP_BASE_THIRD_OCTET + freeVT);
-    LOGD("IP third octet: " << thirdOctetStr);
-    dynamicConfig.ipv4Gateway = boost::regex_replace(dynamicConfig.ipv4Gateway,
-                                                     ZONE_IP_THIRD_OCTET_REGEX,
-                                                     thirdOctetStr);
-    dynamicConfig.ipv4 = boost::regex_replace(dynamicConfig.ipv4,
-                                              ZONE_IP_THIRD_OCTET_REGEX,
-                                              thirdOctetStr);
+    if (dynamicConfig.vt >= 0 && !dynamicConfig.ipv4Gateway.empty() && !dynamicConfig.ipv4.empty()) {
+        // generate first free VT number
+        const int freeVT = getVTForNewZone();
+        LOGD("VT number: " << freeVT);
+        dynamicConfig.vt = freeVT;
+
+        // generate third IP octet for network config
+        std::string thirdOctetStr = std::to_string(ZONE_IP_BASE_THIRD_OCTET + freeVT);
+        LOGD("IP third octet: " << thirdOctetStr);
+        dynamicConfig.ipv4Gateway = boost::regex_replace(dynamicConfig.ipv4Gateway,
+                                                         ZONE_IP_THIRD_OCTET_REGEX,
+                                                         thirdOctetStr);
+        dynamicConfig.ipv4 = boost::regex_replace(dynamicConfig.ipv4,
+                                                  ZONE_IP_THIRD_OCTET_REGEX,
+                                                  thirdOctetStr);
+    }
 
     // save dynamic config
     config::saveToKVStore(mConfig.dbPath, dynamicConfig, dbPrefix);