[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
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)
{
"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"}}
}
},
{
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}
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)
--- /dev/null
+{
+ "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/" ]
+}
done
br_name="virbr-${name}"
+broadcast="$(echo $ipv4|cut -d . -f -3).255"
# XXX assume rootfs if mounted from iso
# 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
fi
br_name="virbr-${name}"
+broadcast="$(echo $ipv4|cut -d . -f -3).255"
# Prepare zone rootfs
ROOTFS_DIRS="\
# 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
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);