Re: [Kimchi-devel] [PATCH] [Kimchi] Isolate unit tests execution.
by Aline Manera
On 05/20/2016 09:10 AM, Paulo Ricardo Paz Vital wrote:
> To show how the new output will be if applied this patch, you can see one
> execution at http://paste.fedoraproject.org/368843/
>
> In the summary you can see that two temporary files are pointed and only these
> two files will be available after the execution (all other files were deleted).
So will I need to check file by file to get the error output?! Why not
use a single file?
> On May 20 08:27AM, Paulo Ricardo Paz Vital wrote:
>> On May 18 06:24PM, Aline Manera wrote:
>>>
>>> On 05/16/2016 11:16 PM, pvital(a)linux.vnet.ibm.com wrote:
>>>> From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
>>>>
>>>> This patch isolates each unit test execution reducing the occurrences of tests
>>>> using data from previous unit tests and making results not reliable.
>>>>
>>>> In addition, it also simplifies the output of tests execution, printing the tags
>>>> PASSED and FAILED and the error/failed banners only when necessary.
>>>>
>>>> Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
>>>> ---
>>>> tests/run_tests.sh.in | 53 +++++++++++++++++++++++++++++++++++++++------------
>>>> 1 file changed, 41 insertions(+), 12 deletions(-)
>>>>
>>>> diff --git a/tests/run_tests.sh.in b/tests/run_tests.sh.in
>>>> index 68dfa2e..d9c2661 100644
>>>> --- a/tests/run_tests.sh.in
>>>> +++ b/tests/run_tests.sh.in
>>>> @@ -21,6 +21,10 @@
>>>> HAVE_UNITTEST=@HAVE_PYMOD_UNITTEST@
>>>> PYTHON_VER=@PYTHON_VERSION@
>>>>
>>>> +RED='\033[0;31m'
>>>> +GREEN='\033[0;32m'
>>>> +NC='\033[0m' # No Color
>>>> +
>>>> if [ "$1" = "-v" ]; then
>>>> OPTS="-v"
>>>> shift
>>>> @@ -40,19 +44,44 @@ else
>>>> CMD="python -m unittest"
>>>> fi
>>>>
>>>> -LIST=($ARGS)
>>>> -MODEL_LIST=()
>>>> -MOCK_LIST=()
>>>> -for ((i=0;i<${#LIST[@]};i++)); do
>>>> -
>>>> - if [[ ${LIST[$i]} == test_model* ]]; then
>>>> - MODEL_LIST+=(${LIST[$i]})
>>>> +NUM_TESTS=0
>>>> +TIME=0
>>>> +declare -A FAILED_UT # dict to store failed unit tests and its OUTPUT_FILE
>>>> +for UT in $ARGS; do
>>>> + OUTPUT_FILE=$(mktemp)
>>>> + echo -n "***** Running unit test: $UT... "
>>>> + # ../../../../../ refers to the project root
>>>> + # ../../../../ refers to wok directory
>>>> + # ../../../ refers to plugins directory
>>>> + PYTHONPATH=../../../../../:../../../../:../../../ \
>>>> + PYTHONWARNINGS="ignore:Unverified HTTPS request" \
>>>> + $CMD $OPTS $UT &> $OUTPUT_FILE
>>> You can do:
>>>
>>> output=$($CMD $OPTS $UT)
>>>
>>> to get the test output. That way we don't need to create multiple temporary
>>> files.
>>>
>> Yeap, I can do this. However, the idea to have a temporary file is keep the full
>> output of the test case execution for future analysis, instead of check only the
>> console history.
>>
>> This patch, when an error or failure happens, prints only the 'banner' with the
>> test case error on user console. With the output stored in a file (temporary
>> because I delete the files which finishes with no errors) I can see it later to
>> fix the error.
>>
>>>> + RES=$?
>>>> + if [ $RES -ne 0 ]; then
>>>> + # unit test has failed, so keep the OUTPUT_FILE and print the results
>>>> + echo -e "\t ${RED}FAILED${NC}"
>>>> + ERROR_LOG_BEGIN=$(grep -n "^\==*" $OUTPUT_FILE | head -n1 | cut -d":" -f1)
>>>> + ERROR_LOG_END=$(cat $OUTPUT_FILE | wc -l)
>>>> + tail -n $((${ERROR_LOG_END}-${ERROR_LOG_BEGIN}+1)) $OUTPUT_FILE
>>>> + FAILED_UT+=([$UT]=$OUTPUT_FILE)
>>>> + OUTPUT=$(grep "Ran" $OUTPUT_FILE)
>>> Following my suggestion to do not use temporary files, all the above block
>>> will be replace by:
>>>
>>> FAILED_UT+=$output
>>>
>> With this changes the full output of test execution will be printed in the
>> console. As I told above, this patch's idea is 'clean' the output printed in the
>> console by showing only the error/failure 'banner' and keeping the full
>> execution stack on a file.
>>
>>>> else
>>>> - MOCK_LIST+=(${LIST[$i]})
>>>> + # unit test has passed, so print the results and delete the OUTPUT_FILE
>>>> + OUTPUT=$(grep "Ran" $OUTPUT_FILE)
>>>> + echo -e "\t ${GREEN}PASSED${NC} - $OUTPUT"
>>>> + rm -rf $OUTPUT_FILE
>>>> fi
>>>> + TES=$(echo $OUTPUT | cut -d" " -f2)
>>>> + NUM_TESTS=$(echo "$NUM_TESTS + $TES" | bc)
>>>> + TES=$(echo $OUTPUT | cut -d" " -f5)
>>>> + TIME=$(echo "$TIME + ${TES:0:-1}" | bc)
>>>> done
>>>>
>>>> -# ../../../../../ refers to the project root
>>>> -# ../../../../ refers to wok directory
>>>> -# ../../../ refers to plugins directory
>>>> -PYTHONPATH=../../../../../:../../../../:../../../ PYTHONWARNINGS="ignore:Unverified HTTPS request" $CMD $OPTS ${MODEL_LIST[@]} ${MOCK_LIST[@]}
>>>> +# Print summary results
>>>> +echo -e "======================================================================"
>>>> +echo -e "===================== Kimchi Unit Tests Summary ======================"
>>>> +echo -e "Ran $NUM_TESTS tests in $TIME seconds."
>>>> +for i in "${!FAILED_UT[@]}"; do
>>>> + FAIL_STATS=$(grep FAILED ${FAILED_UT[$i]} | cut -d" " -f2-4)
>>>> + echo -e "$i FAILED: $FAIL_STATS - log available at ${FAILED_UT[$i]}"
>>>> +done
>>>> --
>>>> 2.5.5
>> --
>> Paulo Ricardo Paz Vital
>> Linux Technology Center, IBM Systems
>> http://www.ibm.com/linux/ltc/
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel(a)ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>
> --
> Paulo Ricardo Paz Vital
> Linux Technology Center, IBM Systems
> http://www.ibm.com/linux/ltc/
8 years, 7 months
Re: [Kimchi-devel] [PATCH] [Kimchi] Isolate unit tests execution.
by Paulo Ricardo Paz Vital
On May 18 06:24PM, Aline Manera wrote:
>
>
> On 05/16/2016 11:16 PM, pvital(a)linux.vnet.ibm.com wrote:
> > From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
> >
> > This patch isolates each unit test execution reducing the occurrences of tests
> > using data from previous unit tests and making results not reliable.
> >
> > In addition, it also simplifies the output of tests execution, printing the tags
> > PASSED and FAILED and the error/failed banners only when necessary.
> >
> > Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
> > ---
> > tests/run_tests.sh.in | 53 +++++++++++++++++++++++++++++++++++++++------------
> > 1 file changed, 41 insertions(+), 12 deletions(-)
> >
> > diff --git a/tests/run_tests.sh.in b/tests/run_tests.sh.in
> > index 68dfa2e..d9c2661 100644
> > --- a/tests/run_tests.sh.in
> > +++ b/tests/run_tests.sh.in
> > @@ -21,6 +21,10 @@
> > HAVE_UNITTEST=@HAVE_PYMOD_UNITTEST@
> > PYTHON_VER=@PYTHON_VERSION@
> >
> > +RED='\033[0;31m'
> > +GREEN='\033[0;32m'
> > +NC='\033[0m' # No Color
> > +
> > if [ "$1" = "-v" ]; then
> > OPTS="-v"
> > shift
> > @@ -40,19 +44,44 @@ else
> > CMD="python -m unittest"
> > fi
> >
> > -LIST=($ARGS)
> > -MODEL_LIST=()
> > -MOCK_LIST=()
> > -for ((i=0;i<${#LIST[@]};i++)); do
> > -
> > - if [[ ${LIST[$i]} == test_model* ]]; then
> > - MODEL_LIST+=(${LIST[$i]})
> > +NUM_TESTS=0
> > +TIME=0
> > +declare -A FAILED_UT # dict to store failed unit tests and its OUTPUT_FILE
> > +for UT in $ARGS; do
> > + OUTPUT_FILE=$(mktemp)
> > + echo -n "***** Running unit test: $UT... "
> > + # ../../../../../ refers to the project root
> > + # ../../../../ refers to wok directory
> > + # ../../../ refers to plugins directory
> > + PYTHONPATH=../../../../../:../../../../:../../../ \
> > + PYTHONWARNINGS="ignore:Unverified HTTPS request" \
> > + $CMD $OPTS $UT &> $OUTPUT_FILE
>
> You can do:
>
> output=$($CMD $OPTS $UT)
>
> to get the test output. That way we don't need to create multiple temporary
> files.
>
Yeap, I can do this. However, the idea to have a temporary file is keep the full
output of the test case execution for future analysis, instead of check only the
console history.
This patch, when an error or failure happens, prints only the 'banner' with the
test case error on user console. With the output stored in a file (temporary
because I delete the files which finishes with no errors) I can see it later to
fix the error.
> > + RES=$?
> > + if [ $RES -ne 0 ]; then
> > + # unit test has failed, so keep the OUTPUT_FILE and print the results
> > + echo -e "\t ${RED}FAILED${NC}"
>
> > + ERROR_LOG_BEGIN=$(grep -n "^\==*" $OUTPUT_FILE | head -n1 | cut -d":" -f1)
> > + ERROR_LOG_END=$(cat $OUTPUT_FILE | wc -l)
> > + tail -n $((${ERROR_LOG_END}-${ERROR_LOG_BEGIN}+1)) $OUTPUT_FILE
> > + FAILED_UT+=([$UT]=$OUTPUT_FILE)
> > + OUTPUT=$(grep "Ran" $OUTPUT_FILE)
>
> Following my suggestion to do not use temporary files, all the above block
> will be replace by:
>
> FAILED_UT+=$output
>
With this changes the full output of test execution will be printed in the
console. As I told above, this patch's idea is 'clean' the output printed in the
console by showing only the error/failure 'banner' and keeping the full
execution stack on a file.
> > else
> > - MOCK_LIST+=(${LIST[$i]})
> > + # unit test has passed, so print the results and delete the OUTPUT_FILE
> > + OUTPUT=$(grep "Ran" $OUTPUT_FILE)
> > + echo -e "\t ${GREEN}PASSED${NC} - $OUTPUT"
> > + rm -rf $OUTPUT_FILE
> > fi
> > + TES=$(echo $OUTPUT | cut -d" " -f2)
> > + NUM_TESTS=$(echo "$NUM_TESTS + $TES" | bc)
> > + TES=$(echo $OUTPUT | cut -d" " -f5)
> > + TIME=$(echo "$TIME + ${TES:0:-1}" | bc)
> > done
> >
> > -# ../../../../../ refers to the project root
> > -# ../../../../ refers to wok directory
> > -# ../../../ refers to plugins directory
> > -PYTHONPATH=../../../../../:../../../../:../../../ PYTHONWARNINGS="ignore:Unverified HTTPS request" $CMD $OPTS ${MODEL_LIST[@]} ${MOCK_LIST[@]}
> > +# Print summary results
> > +echo -e "======================================================================"
> > +echo -e "===================== Kimchi Unit Tests Summary ======================"
> > +echo -e "Ran $NUM_TESTS tests in $TIME seconds."
> > +for i in "${!FAILED_UT[@]}"; do
> > + FAIL_STATS=$(grep FAILED ${FAILED_UT[$i]} | cut -d" " -f2-4)
> > + echo -e "$i FAILED: $FAIL_STATS - log available at ${FAILED_UT[$i]}"
> > +done
> > --
> > 2.5.5
>
--
Paulo Ricardo Paz Vital
Linux Technology Center, IBM Systems
http://www.ibm.com/linux/ltc/
8 years, 7 months
Re: [Kimchi-devel] [PATCH][Kimchi 1/2] Modify max memory slots default numbers
by Aline Manera
On 05/19/2016 09:14 AM, Rodrigo Trujillo wrote:
> This patch sets the number of available memory device slots to the
> number supported by each architecture in qemu/libvirt. Without the
> restriction of 1GB per device, now kimchi Will allow users to hotplug
> more devices than previous implementarion.
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
> ---
> model/vms.py | 23 ++---------------------
> osinfo.py | 11 +++++++++++
> vmtemplate.py | 20 +++++---------------
> 3 files changed, 18 insertions(+), 36 deletions(-)
>
> diff --git a/model/vms.py b/model/vms.py
> index 0108381..48196dd 100644
> --- a/model/vms.py
> +++ b/model/vms.py
> @@ -58,6 +58,7 @@ from wok.plugins.kimchi.model.utils import get_ascii_nonascii_name, get_vm_name
> from wok.plugins.kimchi.model.utils import get_metadata_node
> from wok.plugins.kimchi.model.utils import remove_metadata_node
> from wok.plugins.kimchi.model.utils import set_metadata_node
> +from wok.plugins.kimchi.osinfo import defaults
> from wok.plugins.kimchi.screenshot import VMScreenshot
> from wok.plugins.kimchi.utils import get_next_clone_name
> from wok.plugins.kimchi.utils import template_name_from_uri
> @@ -858,23 +859,6 @@ class VMModel(object):
> elif newMem == (oldMem << 10):
> newMem = newMem - memDevsAmount
>
> - def _get_slots(mem, maxMem):
> - slots = (maxMem - mem) >> 10 >> 10
> - # Libvirt does not accepts slots <= 1
> - if slots < 0:
> - raise InvalidParameter("KCHTMPL0031E",
> - {'mem': str(mem >> 10),
> - 'maxmem': str(maxMem >> 10)})
> - elif slots == 0:
> - slots = 1
> -
> - # max 32 slots on Power
> - distro, _, _ = platform.linux_distribution()
> - if distro == "IBM_PowerKVM" and slots > 32:
> - slots = 32
> - return slots
> - # End of _get_slots
> -
> # There is an issue in Libvirt/Qemu, where Guest does not start if
> # memory and max memory are the same. So we decided to remove max
> # memory and only add it if user explicitly provides it, willing to
> @@ -886,7 +870,7 @@ class VMModel(object):
> max_mem_xml = E.maxMemory(
> str(newMaxMem),
> unit='Kib',
> - slots=str(_get_slots(newMem, newMaxMem)))
> + slots=str(defaults['mem_dev_slots']))
You don't need to pass that value as parameter to VMTemplate.
VMTemplate already gets the osinfo.defaults values on initialization so
the value is in self.info - you just need to use it when needed.
> root.insert(0, max_mem_xml)
> elif (maxMemTag is None) and (newMem == newMaxMem):
> # Nothing to do
> @@ -894,7 +878,6 @@ class VMModel(object):
> elif (maxMemTag is not None) and (newMem != newMaxMem):
> # Just update value in max memory tag
> maxMemTag.text = str(newMaxMem)
> - maxMemTag.set('slots', str(_get_slots(newMem, newMaxMem)))
> elif (maxMemTag is not None) and (newMem == newMaxMem):
> if self._get_mem_dev_total_size(ET.tostring(root)) == 0:
> # Remove the tag
> @@ -928,8 +911,6 @@ class VMModel(object):
> if (newMem == newMaxMem and
> (self._get_mem_dev_total_size(ET.tostring(root)) == 0)):
> root.remove(maxMemTag)
> - else:
> - maxMemTag.set('slots', str(_get_slots(newMem, newMaxMem)))
>
> # Setting memory hard limit to max_memory + 1GiB
> memtune = root.find('memtune')
> diff --git a/osinfo.py b/osinfo.py
> index 7b80f29..d3909ad 100644
> --- a/osinfo.py
> +++ b/osinfo.py
> @@ -34,6 +34,14 @@ SUPPORTED_ARCHS = {'x86': ('i386', 'i686', 'x86_64'),
> 'ppc64le': ('ppc64le')}
>
>
> +# Memory devices slot limits by architecture
> +MEM_DEV_SLOTS = {'ppc64': 32,
> + 'ppc64le': 32,
> + 'x86_64': 256,
> + 'i686': 256,
> + 'i386': 256}
> +
> +
> template_specs = {'x86': {'old': dict(disk_bus='ide',
> nic_model='e1000', sound_model='ich6'),
> 'modern': dict(disk_bus='virtio',
> @@ -175,6 +183,9 @@ def _get_tmpl_defaults():
> # Update defaults values with graphics values
> defaults['graphics'] = default_config.pop('graphics')
>
> + # Setting default memory device slots
> + defaults['mem_dev_slots'] = MEM_DEV_SLOTS.get(os.uname()[4], 32)
> +
> return defaults
>
>
> diff --git a/vmtemplate.py b/vmtemplate.py
> index 5e38275..ef92914 100644
> --- a/vmtemplate.py
> +++ b/vmtemplate.py
> @@ -18,7 +18,6 @@
> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>
> import os
> -import platform
> import stat
> import time
> import urlparse
> @@ -369,25 +368,16 @@ class VMTemplate(object):
> # TODO: need modify this when boot order edition feature came upstream.
> params['boot_order'] = get_bootorder_xml()
>
> - # Setting maximum number of slots to avoid errors when hotplug memory
> - # Number of slots are the numbers of chunks of 1GB that fit inside
> - # the max_memory of the host minus memory assigned to the VM. It
> - # cannot have more than 32 slots in Power.
> + # Setting maximum number of memory slots
> + slots = str(self.info['mem_dev_slots'])
> +
> + # Rearrange memory parameters
> memory = self.info['memory'].get('current')
> maxmemory = self.info['memory'].get('maxmemory')
> -
> - slots = (maxmemory - memory) >> 10
> - if slots < 0:
> + if maxmemory < memory:
> raise OperationFailed("KCHVM0041E",
> {'maxmem': str(maxmemory)})
> - elif slots == 0:
> - slots = 1
> - elif slots > 32:
> - distro, _, _ = platform.linux_distribution()
> - if distro == "IBM_PowerKVM":
> - slots = 32
>
> - # Rearrange memory parameters
> params['memory'] = self.info['memory'].get('current')
> params['max_memory'] = ""
> # if there is not support to memory hotplug in Libvirt or qemu, we
8 years, 7 months
[PATCH] [Wok] Externalised 'Actions' to i18n and updated .pot and *.po files
by pkulkark@linux.vnet.ibm.com
From: Pooja Kulkarni <pkulkark(a)linux.vnet.ibm.com>
This patch externalised the 'Actions'
button to i18n file and updated .pot
and *.po files using update-po.
Signed-off-by: Pooja Kulkarni <pkulkark(a)linux.vnet.ibm.com>
---
po/de_DE.po | 19 ++++++++++++++++++-
po/en_US.po | 19 ++++++++++++++++++-
po/es_ES.po | 19 ++++++++++++++++++-
po/fr_FR.po | 19 ++++++++++++++++++-
po/it_IT.po | 19 ++++++++++++++++++-
po/ja_JP.po | 19 ++++++++++++++++++-
po/ko_KR.po | 19 ++++++++++++++++++-
po/pt_BR.po | 20 ++++++++++++++++++--
po/ru_RU.po | 19 ++++++++++++++++++-
po/wok.pot | 19 ++++++++++++++++++-
po/zh_CN.po | 20 ++++++++++++++++++--
po/zh_TW.po | 19 ++++++++++++++++++-
ui/js/src/wok.list.js | 2 +-
ui/pages/i18n.json.tmpl | 3 ++-
14 files changed, 219 insertions(+), 16 deletions(-)
diff --git a/po/de_DE.po b/po/de_DE.po
index 72ff6be..0fb869d 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -108,6 +108,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "FEHLERCODE"
@@ -184,6 +198,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"Der Benutzername oder das Kennwort, den bzw. das Sie eingegeben haben, ist "
diff --git a/po/en_US.po b/po/en_US.po
index afee270..73d7056 100644
--- a/po/en_US.po
+++ b/po/en_US.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -104,6 +104,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr ""
@@ -178,6 +192,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
diff --git a/po/es_ES.po b/po/es_ES.po
index 0f7f244..8acb513 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -107,6 +107,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "CÓDIGO DE ERROR"
@@ -184,6 +198,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"El nombre de usuario o contraseña que ha especificado es incorrecto. Por "
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 9dd1e3c..9cc473a 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2014-08-27 21:30+0000\n"
"Last-Translator: BobSynfig\n"
"Language-Team: French (http://www.transifex.com/projects/p/kimchi/language/"
@@ -110,6 +110,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "ERROR CODE"
@@ -187,6 +201,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"Le nom d'utilisateur ou le mot de passe que vous avez entré est incorrect. "
diff --git a/po/it_IT.po b/po/it_IT.po
index 756afa1..ef3729d 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -107,6 +107,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "CODICE DI ERRORE"
@@ -184,6 +198,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"Il nome utente o la password immessi non sono corretti. Ripetere "
diff --git a/po/ja_JP.po b/po/ja_JP.po
index 26267ea..dc8926f 100644
--- a/po/ja_JP.po
+++ b/po/ja_JP.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -106,6 +106,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "エラー・コード"
@@ -182,6 +196,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr "入力したユーザー名またはパスワードが誤っています。やり直してください。"
diff --git a/po/ko_KR.po b/po/ko_KR.po
index 6d03ee6..84b4750 100644
--- a/po/ko_KR.po
+++ b/po/ko_KR.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -103,6 +103,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "오류 코드"
@@ -179,6 +193,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"입력한 사용자 이름 또는 비밀번호가 올바르지 않습니다. 다시 시도하십시오."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 1f05ae5..a4ae451 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2015-03-23 12:57+0000\n"
"Last-Translator: Crístian Deives dos Santos Viana <cristiandeives@gmail."
"com>\n"
@@ -123,6 +123,20 @@ msgstr "Valor inválido '%(value)s'"
msgid "Invalid data unit '%(unit)s'"
msgstr "Unidade inválida '%(unit)s'"
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "CÓDIGO DE ERRO"
@@ -200,6 +214,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
"O usuário ou senha inseridos estão incorretos. Por favor, tente novamente."
@@ -273,6 +290,5 @@ msgstr ""
msgid "Request Type"
msgstr ""
-
msgid "Search"
msgstr ""
diff --git a/po/ru_RU.po b/po/ru_RU.po
index bb20787..0e81ba4 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2014-08-28 17:32+0000\n"
"Last-Translator: Aline Manera <aline.manera(a)gmail.com>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/kimchi/language/"
@@ -104,6 +104,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "Код ошибки"
@@ -180,6 +194,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr "Указано неверное имя пользователя или пароль. Введите еще раз."
diff --git a/po/wok.pot b/po/wok.pot
index 657c663..01b8a28 100755
--- a/po/wok.pot
+++ b/po/wok.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -104,6 +104,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr ""
@@ -178,6 +192,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
index f1b1f0f..0a66eec 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-06-27 10:48+0000\n"
"Last-Translator: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
"Language-Team: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>\n"
@@ -120,6 +120,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "错误码"
@@ -195,6 +209,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr "用户名或密码错误,请重新输入。"
@@ -267,6 +284,5 @@ msgstr ""
msgid "Request Type"
msgstr ""
-
msgid "Search"
msgstr ""
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 28b4461..fd83384 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kimchi 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-11 08:43+0200\n"
+"POT-Creation-Date: 2016-05-19 21:30+0530\n"
"PO-Revision-Date: 2013-07-11 17:32-0400\n"
"Last-Translator: Crístian Viana <vianac(a)linux.vnet.ibm.com>\n"
"Language-Team: English\n"
@@ -103,6 +103,20 @@ msgstr ""
msgid "Invalid data unit '%(unit)s'"
msgstr ""
+msgid "Request made on collection"
+msgstr ""
+
+msgid "Request made on resource"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged in"
+msgstr ""
+
+#, python-format
+msgid "User '%(username)s' logged out"
+msgstr ""
+
msgid "ERROR CODE"
msgstr "錯誤碼"
@@ -179,6 +193,9 @@ msgstr ""
msgid "No results found!"
msgstr ""
+msgid "Actions"
+msgstr ""
+
msgid "The username or password you entered is incorrect. Please try again."
msgstr "您輸入的使用者名稱或密碼不正確。請重試。"
diff --git a/ui/js/src/wok.list.js b/ui/js/src/wok.list.js
index 3b3055e..d17a3e7 100644
--- a/ui/js/src/wok.list.js
+++ b/ui/js/src/wok.list.js
@@ -43,7 +43,7 @@ wok.widget.List.prototype = (function() {
'<div id="{id}-action-group" class="wok-list-action-button-container">',
'<div class="dropdown mobile-action">',
'<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">',
- '<span class="mobile-action-label">Actions</span>', // TODO: Replace with i18n string
+ '<span class="mobile-action-label">'+i18n['WOKSETT0012M']+'</span>',
'</button>',
'<ul class="dropdown-menu" role="menu">',
'</ul>',
diff --git a/ui/pages/i18n.json.tmpl b/ui/pages/i18n.json.tmpl
index 8743d4d..ca7ae4c 100644
--- a/ui/pages/i18n.json.tmpl
+++ b/ui/pages/i18n.json.tmpl
@@ -48,5 +48,6 @@
"WOKSETT0008M": "$_("Filter")",
"WOKSETT0009M": "$_("Showing {{ctx.start}} to {{ctx.end}} of {{ctx.total}} entries")",
"WOKSETT0010M": "$_("No results found!")",
- "WOKSETT0011M": "$_("Loading...")"
+ "WOKSETT0011M": "$_("Loading...")",
+ "WOKSETT0012M": "$_("Actions")"
}
--
2.1.0
8 years, 7 months
[PATCH v2] [Wok 0/2] Issue #114: Help page for "Settings" tab
by sureshab@linux.vnet.ibm.com
From: Suresh Babu Angadi <sureshab(a)in.ibm.com>
v2: Added "Code derived from" in copyright for the files
copied from other plugins.
Changed help text as per review comments
Suresh Babu Angadi (2):
Issue #114: Help page for "Settings" tab
made changes in config to add '/help' uri
made Makefile.am and configure.ac changes to
add "help" directory
added makefiles for "help" and "en_Us" directory
Issue #114: Help page for "Settings" tab
added dita-hepl.xsl, css file for help pages and
help page for "Settings" tab
configure.ac | 2 +
src/wok/config.py.in | 6 ++
tests/test_config.py.in | 5 +
ui/pages/Makefile.am | 2 +-
ui/pages/help/Makefile.am | 37 +++++++
ui/pages/help/dita-help.xsl | 45 ++++++++
ui/pages/help/en_US/Makefile.am | 26 +++++
ui/pages/help/en_US/settings.dita | 42 ++++++++
ui/pages/help/wok.css | 209 ++++++++++++++++++++++++++++++++++++++
9 files changed, 373 insertions(+), 1 deletion(-)
create mode 100644 ui/pages/help/Makefile.am
create mode 100644 ui/pages/help/dita-help.xsl
create mode 100644 ui/pages/help/en_US/Makefile.am
create mode 100644 ui/pages/help/en_US/settings.dita
create mode 100644 ui/pages/help/wok.css
--
2.1.0
8 years, 7 months
[PATCH v3] [Kimchi 0/3] Implementing 'Passthrough' virtual network type
by dhbarboza82@gmail.com
From: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
v3:
- overhaul. Implemented as a new network type instead of
a variation of the 'macvtap' type.
- passthrough networks now accepts multiple interfaces
like VEPA does
v2:
- used interface now being displayed in UI and backend
- fixed an issue where the newly created network would
appear as 'passthrough' in the UI until a page refresh
This patch set adds a new network type called 'passthrough' to
Kimchi. Docs, model, test and UI changes included.
This is how it works in action using curl:
$ curl -k -u root -H "Content-Type: application/json" -H "Accept: application/json" -X POST 'https://localhost:10001/plugins/kimchi/networks' -d'{"name":"danielhb_passthrough", "connection":"passthrough", "interfaces":["enP2p1s0","enP2p1s1f2"]}'
Enter host password for user 'root':
{
"subnet":"",
"connection":"passthrough",
"state":"inactive",
"name":"danielhb_passthrough",
"autostart":true,
"in_use":false,
"dhcp":{
"start":"",
"end":""
},
"interfaces":[
"enP2p1s0",
"enP2p1s1f2"
],
"vms":[],
"persistent":true
}
Daniel Henrique Barboza (3):
Passthrough macvtap network support: doc changes
Passthrough macvtap network support: model and test changes
Passthrough macvtap network support: UI changes
API.json | 2 +-
docs/API.md | 8 +++++++
i18n.py | 2 +-
model/networks.py | 15 +++++++------
tests/test_networkxml.py | 42 ++++++++++++++++++++++++++++++++++++
ui/js/src/kimchi.network.js | 1 +
ui/js/src/kimchi.network_add_main.js | 23 +++++++++++++-------
ui/pages/network-add.html.tmpl | 1 +
xmlutils/network.py | 2 +-
9 files changed, 79 insertions(+), 17 deletions(-)
--
2.5.5
8 years, 7 months