Age | Commit message (Collapse) | Author | Files | Lines |
|
* Update docs/submodules/releng from branch 'master'
- Merge "Directly Run Anteater Docker Container"
- Directly Run Anteater Docker Container
The current approach is to run /bin/bash in a fully privilaged docker
container as the root user and exec the anteater command from this.
There are a couple of reasons this approach doesn't make sense:
1) anteater is not a long running service
2) anteater doesn't need any privilaged access to the host
3) anteater is already a compiled binary and can be ran directly
Because the anteater container doesn't need access to all the host
devices nor is it running docker containers inside of docker, the
`--privileged=true` flag can be removed.
Note: '--rm' is added as well to ensure volumes do not persist past the
container lifecycle and lead to build server running out of disk space.
JIRA: RELENG-250
Change-Id: I1ec90b3737abf591b6b3373fe2fc8f52cdcfb11a
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "Acquire NSB specific data from Heat."
- Acquire NSB specific data from Heat.
First we add mac_address, subnet_cidr to Heat template outputs
Then we convert those into a form for NSB and add vld_id.
NSB also requires PCI Bus ID, kernel driver
and dpdk_port_num. We get this by ssh-ing
into instance and dumping sysfs
We also need to fix allow for ssh key auth,
and implement relative path file loading
so NSB can find all its YAML files
JIRA: YARDSTICK-580
Change history:
don't hide heat create tracebacks we need tracebacks for debug
vnf_generic: add task_path to scenario so we can load relative paths
for vnf_generic we want to be able to load yaml relative to the
task path
For example:
traffic_profile: ../../traffic_profiles/fixed.yaml
topology: ping_tg_topology.yaml # TODO: look in relative path where the tc.yaml is found
These need to be relative to samples/vnf_samples/nsut/ping/tc_ping_heat_context.yaml
Add a scenario["task_path"] entry
heat: log actual exception
vnf_generic: replace list with set and iterate over values()
some general refactors to remove redundact lookups and
type conversions
heat: provide mac_address, device_id and network_id from outputs
We may need more information to dynamically
determine test topology.
Towards this end return more info in the heat template.
We can return mac_address, device_id and network_id.
Once we have this info we can add it to the context_cfg
as an interfaces dict.
add sample vnf ping multi-network test
this test requires 3 network, one for mgmt
and the other two for NSB traffic tests
We have to make sure we don't use DPDK
on mgmt interface because DPDK unbinds
the driver
heat: convert networks to OrderedDict
so we can lookups networks as well as
iterate over them in consisitent order
heat: and vld_id to networks for vnf_generic
vnf_generic uses vld_id Virtual Link Descriptor ID
to identify interfaces
Add the key to the networks dict
and store in Networks object
implement relative path file loading in vnf_generic
in multiple places we need to load a file
relative to the task path, so add
open_relative_file_path
and modify load_vnf_model to include the scenario_cfg
parameter so we have access to task_path
DRAFT: heat timeout support
Heat stack in CI job failed due to some Nova issue.
But then apparently yardstick kept running and took 180mins to timeout
https://build.opnfv.org/ci/view/bottlenecks/job/bottlenecks-compass-posca_stress_ping-baremetal-daily-master/16/console
We can add a Heat create timeout and fail faster if there is an error.
The question is how long should we wait for a Heat stack to deploy. We
can set a default and allow override in the heat context config, if
users make complicated stacks
heat: get netmask and gateway from heat outputs
we have do some tricky business with finding
the subnet cidr and converting it into netmask
vnf_generic: get vpci, driver and dpdk_port_num
use a big old find command to dump all the sysfs
netdev info nicely. This was re-used from autotest FCoE tests.
r"""find /sys/devices/pci* -type d -name net -exec sh -c '{ grep -sH ^ \
+$1/ifindex $1/address $1/operstate $1/device/vendor $1/device/device \
+$1/device/subsystem_vendor $1/device/subsystem_device ; \
+printf "%s/driver:" $1 ; basename $(readlink -s $1/device/driver); } \
+' sh \{\}/* \;
This finds all PCI devices that are network devices, then
dumps all the relevant info using /bin/sh.
Then we parse this into a 'netdevs' dict inside the node_dict
and also convert into VNF fields we need.
vnf_generic: set node name for kpis
node is a dict, so we have to use node_name
vnfdgen: we CANNOT use TaskTemplate.render
because it does not allow for missing variables, we need to allow
password for key_filename to be undefined
remove default ssh password hack, once rendering is fixed
add new example tc_external_ping_heat_context
Change-Id: If1fe0c1a2ab0a5be17e40790a66f28f706fa44d6
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "HA testcase improvement"
- HA testcase improvement
This patch improve HA test case in the following aspects:
1. the "GeneralHA" type now will check if the target service process in the controller node.
2. support ignore server certificate
3. add debug log for recovering service failed
4. improve method to kill keystone process
Change-Id: I9ae7ab54391fe41d5d7f3e4951a7ac2e3ba75968
Signed-off-by: JingLu5 <lvjing5@huawei.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "bugfix: storperf timeout in ci"
- bugfix: storperf timeout in ci
JIRA: YARDSTICK-680
Change-Id: Ie405187b8ab085a9e4f40a7e7e7e661c94e83630
Signed-off-by: rexlee8776 <limingjiang@huawei.com>
|
|
* Update docs/submodules/octopus from branch 'master'
- Merge "Scenario Lifecycle Document - update chapter 5 Creating Scenarios"
- Scenario Lifecycle Document - update chapter 5 Creating Scenarios
- some clarifications
- some updates from hackfest discussions
- added section on scenario owners
Jira OCTO-162
Signed-off-by: ulik <ulrich.kleber@huawei.com>
Change-Id: I130fd2b4d17f186e7137502e32b08f4f2ae196ec
|
|
* Update docs/submodules/dovetail from branch 'master'
- Bugfix: Move userconfig directory into dovetail/dovetail
JITA: DOVETAIL-449
1. Dovetail cvp.0.1.0 link dovetail/dovetail to
/usr/local/lib/python2.7/dist-packages/dovetail/
2. The directory dovetail/userconfig is lost in this image
3. Move dovetail/userconfig into dovetail/dovetail/userconfig
Change-Id: I9da8389e02d92f35879ff5c6a1db1b7d984dd862
Signed-off-by: xudan <xudan16@huawei.com>
|
|
* Update docs/submodules/functest from branch 'master'
- Merge "Clone tempest repository in the Docker image"
- Clone tempest repository in the Docker image
Rally needs to have a copy of the Tempest repository
in order to install the verifier. Otherwise, rally will
clone it automatically anyway.
This also uplifts the tempest version to 15.0.0 which targets
Ocata deployments according to [1]
[1]: https://releases.openstack.org/ocata/
Change-Id: I30e922a261a4ab1875d48c4754df09426b5f67e4
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "update requirements.txt for OpenStack Ocata"
- update requirements.txt for OpenStack Ocata
add shade for ansible
update other versions to make OpenStack Ocata upper-contraints.txt
sort file using C.UTF-8 locale as OpenStack does.
C.UTF-8 locale sorts Upper-case before lower-case.
Change-Id: Ia20eaa2b024be5cc8595873b8cc5dcba5f25d10b
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "support pagination in TestAPI"
- support pagination in TestAPI
In this patch, pagination is supported, so you can go through results
leveraging: http://testresults.opnfv.org/test/api/v1/results?page=2
Change-Id: Ibe31c787643f27dbb06c4899e713b3c8e716e784
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
|
|
* Update docs/submodules/functest from branch 'master'
- Fix command in prepare env to execute check_os.sh
[1] introduced a bug when adding "sh" to the call.
There is no need to use sh or bash in the command string.
[1]: https://gerrit.opnfv.org/gerrit/#/c/36163/
Change-Id: I9ce443721b69945a4a749da0caa6c008cc8ca284
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "ping: don't split if target_vm is a dict"
- ping: don't split if target_vm is a dict
If we run sample/ping-hot.yaml, it will encounter an AttributeError, log
see below:
Traceback (most recent call last):
File
"/usr/local/lib/python2.7/dist-packages/yardstick/benchmark/runners/duration.py",
line 69, in _worker_process
method(data)
File
"/usr/local/lib/python2.7/dist-packages/yardstick/benchmark/scenarios/networking/ping.py",
line 94, in run
target_vm_name = target_vm.split('.')[0]
AttributeError: 'dict' object has no attribute 'split'
Because here host and target will be a dict
JIRA: YARDSTICK-561
Change-Id: I4b7628bf20050d6d516a80efe3785f750d27c05e
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "cleanup: remove fuel plugin since fuel@opnfv uses mcp"
- cleanup: remove fuel plugin since fuel@opnfv uses mcp
Change-Id: Ic9fb9db5c5af517cec1e60740ce5a8fe0572c5bf
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "temp freeze releng version for stable/danube workaround"
- temp freeze releng version for stable/danube workaround
releng doesn't have a branch, so we need to freeze
the releng version.
There is an issue with releng fetch_os_creds.sh change
/home/opnfv/repos/releng/utils/fetch_os_creds.sh: line 75: BRANCH:
unbound variable
So we need to revert back to commit before this change
Change-Id: Ie8b0f68879a873aab584aa32b576d8b5ba602a13
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
* Update docs/submodules/qtip from branch 'master'
- Add missing description in compute QPI spec
Change-Id: Ia8bedf1a39afc9fe71984f2f5f1a487512008b5d
Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "barometer: update daily job with artifacts build"
- barometer: update daily job with artifacts build
Update the barometer dailty job to build and upload appropriate build
collateral to artifacts.opnfv.org.
Change-Id: I387fc22439e43ba805a992bc46f14090db57dbf4
Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "Disabling Gluon RPM puild job"
- Disabling Gluon RPM puild job
Disabling the Gluon rpm build job because the Gluon scenario won't
be included in the Euphrates release. The Danube build and deploy
job use the already built artifacts.
Change-Id: I08ffb2975482c4954906f1068a37cc5eab119123
Signed-off-by: Georg Kunz <georg.kunz@ericsson.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Fixed launcher app to support new settings kwargs.
Additionally, found issue with importing ansible libraries.
Needed to rename the snaps.provisioning.ansible package to 'ansible_pb'.
JIRA: SNAPS-107 & SNAPS-93
Change-Id: I8c8628d3af5ce30849229ed47bfbb0ecaad5b3ad
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/armband from branch 'master'
- docs: Update release date
Change-Id: I659946aef133af3b99120903d57527daccf67f53
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "bug fix: bad format for start/time in Tempest reporting"
- bug fix: bad format for start/time in Tempest reporting
Change-Id: Ic9792023b9041dbe8081ff9840caa2cf2901b189
Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes UserSettings constructor to use kwargs."
- Changes UserSettings constructor to use kwargs.
And changed line lengths to 79 for pep8.
JIRA: SNAPS-104
Change-Id: I04413ccd783b5ccdac0f6d8e76780e728f765962
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes StackSettings constructor to use kwargs."
- Changes StackSettings constructor to use kwargs.
And changed line lengths to 79 for pep8.
JIRA: SNAPS-103
Change-Id: Iacc3a42cbf3bebe7336d17fc4a4574590f15b93a
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes SecurityGroupSettings & SecurityGroupRuleSettings constructor to use kwargs."
- Changes SecurityGroupSettings & SecurityGroupRuleSettings constructor to use kwargs.
And changed line lengths to 79 for pep8.
JIRA: SNAPS-102
Change-Id: Ifa878ba01694eaa17ee05cea5dbbe9bc8bde3cd0
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes to RouterSettings constructors to use kwargs."
- Changes to RouterSettings constructors to use kwargs.
And changed line lengths to 79 for pep8
JIRA: SNAPS-101
Change-Id: I2b63e4130644ad422aa1f81bcf2627e97d97c035
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes to ProjectSettings constructors to use kwargs."
- Changes to ProjectSettings constructors to use kwargs.
And changed line lengths to 79 for pep8
Change-Id: I3ea32e221608d759466973071dd86f9037ad2996
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes to NetworkSettings, SubnetSettings, and PortSettings constructors to use kwargs."
- Changes to NetworkSettings, SubnetSettings, and PortSettings constructors to use kwargs.
And changed line lengths to 79 for pep8
JIRA: SNAPS-99
Change-Id: Iedb3ff663dc9d71ce774b5c4c1d0bef601f792da
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes to KeypairSettings constructor to use kwargs."
- Changes to KeypairSettings constructor to use kwargs.
And changed line lengths to 79 for pep8.
JIRA: SNAPS-98
Change-Id: I01f7f459bc46ed818d75d30f8bea7b1e09b5b376
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes to VMInstanceSettings and FloatingIPSettings constructors."
- Changes to VMInstanceSettings and FloatingIPSettings constructors.
Removed named parameters and replaced with kwargs.
JIRA: SNAPS-97
Change-Id: I9e313c342a8fd5a99f3ce6e7274406f8a29b8c8b
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes ImageSettings constructor to use kwargs."
- Changes ImageSettings constructor to use kwargs.
And changed line lengths to 79 for pep8.
JIRA: SNAPS-96
Change-Id: Ibda4954a4d9a6be4b94a7b2de61d03b25afff8db
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/snaps from branch 'master'
- Merge "Changes FlavorSettings constructor to use kwargs."
- Changes FlavorSettings constructor to use kwargs.
And changed line lengths to 79 for pep8.
JIRA: SNAPS-95
Change-Id: Icd3ac79c66049b596c14273abb146d957d6e4e67
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
|
|
* Update docs/submodules/fuel from branch 'master'
- Make virtual cluster as noha w/ one controller
* remove glusterfs from cluster
* increase amount of ram on controller
* bring in one more compute node
Change-Id: I04ccd4cdaf65bb860d6d3b9c012e035f598e44d5
Signed-off-by: Michael Polenchuk <mpolenchuk@mirantis.com>
|
|
* Update docs/submodules/yardstick from branch 'master'
- Merge "heat: use dict literal in init_template"
- heat: use dict literal in init_template
prefer dict literals when possible over increment assignment.
Change-Id: Ia40bbc04eed61feb036a1e9ec3b3110b03c095e1
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "make website accessible via testresults.opnfv.org/test"
- make website accessible via testresults.opnfv.org/test
Currently, testapi website can not be fully accessed through
testresults.opnfv.org/test, due to http://testresults.opnfv.org/test is
not a root url. In this patch leverage relative path to make it accessible
Change-Id: I56983d2221791d8a060039ec829278d31ecb5048
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
|
|
* Update docs/submodules/dovetail from branch 'master'
- Merge "fix judgement for https+no credential case"
- fix judgement for https+no credential case
Change-Id: Id3d4e9af04f1882f69b8c9fe588355d76ad001c4
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
|
|
* Update docs/submodules/dovetail from branch 'master'
- bugfix of dockerfile
Change-Id: I45b317e6feb4f889bd136b5d9f6a0f1e26db988f
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
|
|
* Update docs/submodules/functest from branch 'master'
- Merge "Use directly OpenStack project packages"
- Use directly OpenStack project packages
It stops cloning via git for the next OpenStack projects:
- networking-bgpvpn
- rally
- tempest
- kingbird
- refstack-client
It should be noted that refstack_client's setup_env is not designed
to run in Alpine.
Change-Id: I00d17912cad39a0c872d317317e98a78ca9ded2c
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
|
|
* Update docs/submodules/functest from branch 'master'
- Merge "Change barometer module to load"
- Change barometer module to load
As [1] is merged, the way to call the barometer test case is
different as it is hosted in Barometer repo instead of Functest.
The former files are also simply removed too.
baro-tests is no longer a requirement. It is installed as any
third party project.
[1] https://gerrit.opnfv.org/gerrit/#/c/35927/
Co-Authored-By: Cédric Ollivier <cedric.ollivier@orange.com>
Change-Id: Iea56b48fa781600eb3a6ac74662ea8a29f556f99
Signed-off-by: Jose Lausuch <jose.lausuch@ericsson.com>
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
|
|
* Update docs/submodules/functest from branch 'master'
- Merge "Remove all references to /home/opnfv/repos/functest"
- Remove all references to /home/opnfv/repos/functest
It also removes relative (and incomplete) references which could be
defined in modules instead of this global configuration.
Change-Id: Ie20dc3547e49b6224aa8100cd380d37b87ece5a9
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
|
|
* Update docs/submodules/bottlenecks from branch 'master'
- Merge "Docs for Danube 3"
- Docs for Danube 3
JIRA: BOTTLENECKS-137
Documentation for Danube 3
Change-Id: Ic4b2611028fa45c0b731e998296e5000e35a33f6
Signed-off-by: yuyang <Gabriel.yuyang@huawei.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "Support to build docker image with commit id"
- Support to build docker image with commit id
JIRA: DOVETAIL-447
this support dovetail to make tag/container snapshot at some
commit id
this will also used for functest/yardstick if needed, since their danube.2.0/3.0
may not satisfy dovetail requirements, while their snapshots at some commit id
satisfy.
Change-Id: I76cf6df586d1c9f0f563c6bfc039e3e271dc3de8
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
|
|
* Update docs/submodules/dovetail from branch 'master'
- Merge "Docker version misalignment and move some irrelevant messages"
- Docker version misalignment and move some irrelevant messages
JIRA: DOVETAIL-437
JIRA: DOVETAIL-444
1. Docker client version and server version should be 1.12.3 or later.
2. If any of them is older than 1.12.3, there will be an ERROR message.
3. Delete the “rm -rf results” message.
Change-Id: I0c10cf256ef139cac4d43f36108bf5f3f9da8398
Signed-off-by: xudan <xudan16@huawei.com>
|
|
* Update docs/submodules/dovetail from branch 'master'
- branch supported in Dockerfile and use functest/yardstick danube.2.0
JIRA: DOVETAIL-447
Change-Id: Id49d6ded8188900b58349e1983ac3fc8b40b6059
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
|
|
* Update docs/submodules/qtip from branch 'master'
- Add description of each workload
Change-Id: I5d0ae61dc8b0f4cfe9d1e12c7a51edf6b0d56b7a
Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
|
|
* Update docs/submodules/storperf from branch 'master'
- Remove Swagger from Storperf
Remove Swagger module from Storperf
Change-Id: Id491bb7ea1ddd55549d39ddbe4c7a7004d797a59
JIRA: STORPERF-129
Signed-off-by: Shrenik <shrenik.jain@research.iiit.ac.in>
|
|
* Update docs/submodules/storperf from branch 'master'
- Creation of Reporting Module
Adds a new subdirector where all graphing and reporting content, including the
dockerfile, will be stored.
Change-Id: I8e9a0d975fe944faf81e97ae3792379a1375166a
JIRA: STORPERF-162
Signed-off-by: mbeierl <mark.beierl@dell.com>
|
|
* Update docs/submodules/releng from branch 'master'
- --user nobody did not work on ericsson-build3
also change job to only run weekly
Change-Id: I5f0d5f1d7020c02b2f3ec76aa7f5da2196184529
Signed-off-by: agardner <agardner@linuxfoundation.org>
|
|
* Update docs/submodules/barometer from branch 'master'
- ubuntu14.04: fix package list in base build
Change-Id: I42dd5f986bb962249ce5425587b6d101ae05470f
Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
|
|
* Update docs/submodules/joid from branch 'master'
- modified to enable the virtual install.
Change-Id: I97b693fa6cd6eeb638d45fd444a5097a3387a0c9
Signed-off-by: Narinder Gupta <narinder.gupta@canonical.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "[yardstick] add Ross to email recipients"
- [yardstick] add Ross to email recipients
as yardstick PTL I'd like to get Jenkins results emails
Change-Id: If053ab72902c145a13e0dc965ff69211f33c4a88
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
* Update docs/submodules/releng from branch 'master'
- Merge "Generalize Gerrit non-voting Review Macro Name"
- Generalize Gerrit non-voting Review Macro Name
This patch updates the 'report-docs-build-result-to-gerrit' macro name
to reflect that it can work well for more than just the opnfvdocs project.
To take advantage of this macro a build merely needs to write
out the file 'gerrit_comment.txt' with the information they want posted
back to gerrit, and include the macro in the list of builders.
Change-Id: Ifbdc5734fe7e7231be0cfd16d6b8d69cb1383bfd
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
|
|
* Update docs/submodules/fuel from branch 'master'
- Correct ssh key copy options
Change-Id: Iea7a28fcd2ae59bc3ba76bffb42675dfc4bc917d
Signed-off-by: Volodymyr Blokhin <vladrulez@gmail.com>
|