* BP for changes in CBT
@ 2015-07-24 12:21 Konstantin Danilov
2015-07-24 12:43 ` Mark Nelson
0 siblings, 1 reply; 3+ messages in thread
From: Konstantin Danilov @ 2015-07-24 12:21 UTC (permalink / raw)
To: ceph-devel
Hi all,
This is BP/summary for changes in cbt, we discuss on previous week.
Do I need to register it somewhere?
Functional Goals
================
Primary
-------
* Allow to test any block-storage device with same code
* Add openstack and FUEL support
* Allow to iterate tests on any parameter from configuration
* Add graph reports and statistic result processing
* Improve UX : make a package, put on pypi, allow to be installed
with pip; make docker image, put into docker images storage
Secondary
---------
* Allow to execute in non-transitive networks
(where node A can connect to node B,
node B can connect to node C,
but node A can't connect to node C). This is often in
production environments
* Allow to fio task files for load description interchangeably
with yaml description
* Give roles to all discovered nodes to selectively run a
tests and gather resource usage info
* Allow to split configuration on parts
* Add support for hight-level tests - TCP, SPC-1
* Gather cluster(s) hardware and software configuration
* Allow to override configuration settings from command-line
* Add fio based tester, which uses fio tasks (as not all
parameters can be passed with cmd line)
Structural goals
================
* Make code more pep-8 complaint
* Make a package and change all local import relative
* Allow to execute tests without bare minimum of packages
* Replace print with logging
* Store all test results in results directory
* Add ssh key support on node login
* Remove lxml dependency (xml.etree have all requires functions)
Changes
=======
Split code on stages. Each stage is a class:
class IStage(object):
def enter(self, context, config):
pass
def next_iteration(self, context, old_config, new_config):
pass
def exit(self, context, config):
pass
Stages are executed in order one-by-one. Each stages has
a separated part in configuraion, named after stage class.
There a way to mark value in a configuration as an array of
values for cycle. Stages manage logic analyze configuration
and executes stages, selecting values from configuration in cycle.
Example:
In this example each stage get only it part of config,
but in real code it would gets entire config.
'__' - marks cycle in config file.
Config file:
Stage1:
val1: __, [1, 2]
Stage2:
val2: 7
Stage3:
val3: __, [11, 12]
val4: __, [21, 22]
Execution order:
Stage1.enter({val1:1})
Stage2.enter({val2:7})
Stage3.enter({val3:11, val4:21})
Stage3.reenter({val3:11, val4:21}, {val3:11, val4:22})
Stage3.reenter({val3:11, val4:22}, {val3:12, val4:21})
Stage3.reenter({val3:12, val4:21}, {val3:12, val4:22})
Stage3.exit({val3:12, val4:22})
Stage2.exit({val2:7})
Stage3.reenter({val1:1}, {val1:2})
Stage2.enter({val2:7})
Stage3.enter({val3:11, val4:21})
Stage3.reenter({val3:11, val4:21}, {val3:11, val4:22})
Stage3.reenter({val3:11, val4:22}, {val3:12, val4:21})
Stage3.reenter({val3:12, val4:21}, {val3:12, val4:22})
Stage3.exit({val3:12, val4:22})
Stage2.exit({val2:7})
Stage3.exit({val1:2})
Execution goes up and down on tree, and don't skip stages.
Special reenter method allows stage to optimize configuration update.
Cycles need to be specially marked to separate array as one
value from array as list of values. Cycles, embedded in arrays
aren't supported.
The first parameter, passed to each stage method is a context object.
This is common storage for stage results, used to pass data between
stages.
Stage list:
Discover hardware or explicit nodes
Discover FUEL nodes
Discover openstack nodes
Discover openstack VM's
Deploy ceph
Start vm on openstack
Start sensors - ????
Run tests
Result statistical processing
Text report
Graphical report
Sensor data report
Allow to execute in non-transitional networks
---------------------------------------------
This is very often situation in corporate networks. It can be solved
with ssh port-forwarding. Where ssh ports from all nodes, invisible
from main node are mapped on ports on some node, visible from main.
Thanks
--
Kostiantyn Danilov aka koder.ua
Principal software engineer, Mirantis
skype:koder.ua
http://koder-ua.blogspot.com/
http://mirantis.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: BP for changes in CBT
2015-07-24 12:21 BP for changes in CBT Konstantin Danilov
@ 2015-07-24 12:43 ` Mark Nelson
2015-07-24 12:53 ` Konstantin Danilov
0 siblings, 1 reply; 3+ messages in thread
From: Mark Nelson @ 2015-07-24 12:43 UTC (permalink / raw)
To: Konstantin Danilov, ceph-devel
Hi Konstantin,
It might be best to move this to the cbt mailing list for discussion so
that we don't end up filling up ceph-devel. Would you mind re-posting
there?
Mark
On 07/24/2015 07:21 AM, Konstantin Danilov wrote:
> Hi all,
> This is BP/summary for changes in cbt, we discuss on previous week.
> Do I need to register it somewhere?
>
> Functional Goals
> ================
>
> Primary
> -------
>
> * Allow to test any block-storage device with same code
> * Add openstack and FUEL support
> * Allow to iterate tests on any parameter from configuration
> * Add graph reports and statistic result processing
> * Improve UX : make a package, put on pypi, allow to be installed
> with pip; make docker image, put into docker images storage
>
> Secondary
> ---------
>
> * Allow to execute in non-transitive networks
> (where node A can connect to node B,
> node B can connect to node C,
> but node A can't connect to node C). This is often in
> production environments
> * Allow to fio task files for load description interchangeably
> with yaml description
> * Give roles to all discovered nodes to selectively run a
> tests and gather resource usage info
> * Allow to split configuration on parts
> * Add support for hight-level tests - TCP, SPC-1
> * Gather cluster(s) hardware and software configuration
> * Allow to override configuration settings from command-line
> * Add fio based tester, which uses fio tasks (as not all
> parameters can be passed with cmd line)
>
> Structural goals
> ================
>
> * Make code more pep-8 complaint
> * Make a package and change all local import relative
> * Allow to execute tests without bare minimum of packages
> * Replace print with logging
> * Store all test results in results directory
> * Add ssh key support on node login
> * Remove lxml dependency (xml.etree have all requires functions)
>
> Changes
> =======
>
> Split code on stages. Each stage is a class:
>
> class IStage(object):
> def enter(self, context, config):
> pass
>
> def next_iteration(self, context, old_config, new_config):
> pass
>
> def exit(self, context, config):
> pass
>
> Stages are executed in order one-by-one. Each stages has
> a separated part in configuraion, named after stage class.
>
> There a way to mark value in a configuration as an array of
> values for cycle. Stages manage logic analyze configuration
> and executes stages, selecting values from configuration in cycle.
>
> Example:
> In this example each stage get only it part of config,
> but in real code it would gets entire config.
> '__' - marks cycle in config file.
>
> Config file:
>
> Stage1:
> val1: __, [1, 2]
> Stage2:
> val2: 7
> Stage3:
> val3: __, [11, 12]
> val4: __, [21, 22]
>
> Execution order:
>
> Stage1.enter({val1:1})
> Stage2.enter({val2:7})
>
> Stage3.enter({val3:11, val4:21})
> Stage3.reenter({val3:11, val4:21}, {val3:11, val4:22})
> Stage3.reenter({val3:11, val4:22}, {val3:12, val4:21})
> Stage3.reenter({val3:12, val4:21}, {val3:12, val4:22})
> Stage3.exit({val3:12, val4:22})
>
> Stage2.exit({val2:7})
> Stage3.reenter({val1:1}, {val1:2})
> Stage2.enter({val2:7})
>
> Stage3.enter({val3:11, val4:21})
> Stage3.reenter({val3:11, val4:21}, {val3:11, val4:22})
> Stage3.reenter({val3:11, val4:22}, {val3:12, val4:21})
> Stage3.reenter({val3:12, val4:21}, {val3:12, val4:22})
> Stage3.exit({val3:12, val4:22})
>
> Stage2.exit({val2:7})
> Stage3.exit({val1:2})
>
>
> Execution goes up and down on tree, and don't skip stages.
> Special reenter method allows stage to optimize configuration update.
> Cycles need to be specially marked to separate array as one
> value from array as list of values. Cycles, embedded in arrays
> aren't supported.
>
> The first parameter, passed to each stage method is a context object.
> This is common storage for stage results, used to pass data between
> stages.
>
>
> Stage list:
>
> Discover hardware or explicit nodes
> Discover FUEL nodes
> Discover openstack nodes
> Discover openstack VM's
>
> Deploy ceph
>
> Start vm on openstack
> Start sensors - ????
>
> Run tests
>
> Result statistical processing
> Text report
> Graphical report
> Sensor data report
>
>
> Allow to execute in non-transitional networks
> ---------------------------------------------
>
> This is very often situation in corporate networks. It can be solved
> with ssh port-forwarding. Where ssh ports from all nodes, invisible
> from main node are mapped on ports on some node, visible from main.
>
> Thanks
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: BP for changes in CBT
2015-07-24 12:43 ` Mark Nelson
@ 2015-07-24 12:53 ` Konstantin Danilov
0 siblings, 0 replies; 3+ messages in thread
From: Konstantin Danilov @ 2015-07-24 12:53 UTC (permalink / raw)
To: Mark Nelson; +Cc: ceph-devel
Done.
On Fri, Jul 24, 2015 at 3:43 PM, Mark Nelson <mnelson@redhat.com> wrote:
> Hi Konstantin,
>
> It might be best to move this to the cbt mailing list for discussion so that
> we don't end up filling up ceph-devel. Would you mind re-posting there?
>
> Mark
>
>
> On 07/24/2015 07:21 AM, Konstantin Danilov wrote:
>>
>> Hi all,
>> This is BP/summary for changes in cbt, we discuss on previous week.
>> Do I need to register it somewhere?
>>
>> Functional Goals
>> ================
>>
>> Primary
>> -------
>>
>> * Allow to test any block-storage device with same code
>> * Add openstack and FUEL support
>> * Allow to iterate tests on any parameter from configuration
>> * Add graph reports and statistic result processing
>> * Improve UX : make a package, put on pypi, allow to be installed
>> with pip; make docker image, put into docker images storage
>>
>> Secondary
>> ---------
>>
>> * Allow to execute in non-transitive networks
>> (where node A can connect to node B,
>> node B can connect to node C,
>> but node A can't connect to node C). This is often in
>> production environments
>> * Allow to fio task files for load description interchangeably
>> with yaml description
>> * Give roles to all discovered nodes to selectively run a
>> tests and gather resource usage info
>> * Allow to split configuration on parts
>> * Add support for hight-level tests - TCP, SPC-1
>> * Gather cluster(s) hardware and software configuration
>> * Allow to override configuration settings from command-line
>> * Add fio based tester, which uses fio tasks (as not all
>> parameters can be passed with cmd line)
>>
>> Structural goals
>> ================
>>
>> * Make code more pep-8 complaint
>> * Make a package and change all local import relative
>> * Allow to execute tests without bare minimum of packages
>> * Replace print with logging
>> * Store all test results in results directory
>> * Add ssh key support on node login
>> * Remove lxml dependency (xml.etree have all requires functions)
>>
>> Changes
>> =======
>>
>> Split code on stages. Each stage is a class:
>>
>> class IStage(object):
>> def enter(self, context, config):
>> pass
>>
>> def next_iteration(self, context, old_config, new_config):
>> pass
>>
>> def exit(self, context, config):
>> pass
>>
>> Stages are executed in order one-by-one. Each stages has
>> a separated part in configuraion, named after stage class.
>>
>> There a way to mark value in a configuration as an array of
>> values for cycle. Stages manage logic analyze configuration
>> and executes stages, selecting values from configuration in cycle.
>>
>> Example:
>> In this example each stage get only it part of config,
>> but in real code it would gets entire config.
>> '__' - marks cycle in config file.
>>
>> Config file:
>>
>> Stage1:
>> val1: __, [1, 2]
>> Stage2:
>> val2: 7
>> Stage3:
>> val3: __, [11, 12]
>> val4: __, [21, 22]
>>
>> Execution order:
>>
>> Stage1.enter({val1:1})
>> Stage2.enter({val2:7})
>>
>> Stage3.enter({val3:11, val4:21})
>> Stage3.reenter({val3:11, val4:21}, {val3:11, val4:22})
>> Stage3.reenter({val3:11, val4:22}, {val3:12, val4:21})
>> Stage3.reenter({val3:12, val4:21}, {val3:12, val4:22})
>> Stage3.exit({val3:12, val4:22})
>>
>> Stage2.exit({val2:7})
>> Stage3.reenter({val1:1}, {val1:2})
>> Stage2.enter({val2:7})
>>
>> Stage3.enter({val3:11, val4:21})
>> Stage3.reenter({val3:11, val4:21}, {val3:11, val4:22})
>> Stage3.reenter({val3:11, val4:22}, {val3:12, val4:21})
>> Stage3.reenter({val3:12, val4:21}, {val3:12, val4:22})
>> Stage3.exit({val3:12, val4:22})
>>
>> Stage2.exit({val2:7})
>> Stage3.exit({val1:2})
>>
>>
>> Execution goes up and down on tree, and don't skip stages.
>> Special reenter method allows stage to optimize configuration update.
>> Cycles need to be specially marked to separate array as one
>> value from array as list of values. Cycles, embedded in arrays
>> aren't supported.
>>
>> The first parameter, passed to each stage method is a context object.
>> This is common storage for stage results, used to pass data between
>> stages.
>>
>>
>> Stage list:
>>
>> Discover hardware or explicit nodes
>> Discover FUEL nodes
>> Discover openstack nodes
>> Discover openstack VM's
>>
>> Deploy ceph
>>
>> Start vm on openstack
>> Start sensors - ????
>>
>> Run tests
>>
>> Result statistical processing
>> Text report
>> Graphical report
>> Sensor data report
>>
>>
>> Allow to execute in non-transitional networks
>> ---------------------------------------------
>>
>> This is very often situation in corporate networks. It can be solved
>> with ssh port-forwarding. Where ssh ports from all nodes, invisible
>> from main node are mapped on ports on some node, visible from main.
>>
>> Thanks
>>
>
--
Kostiantyn Danilov aka koder.ua
Principal software engineer, Mirantis
skype:koder.ua
http://koder-ua.blogspot.com/
http://mirantis.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-07-24 12:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-24 12:21 BP for changes in CBT Konstantin Danilov
2015-07-24 12:43 ` Mark Nelson
2015-07-24 12:53 ` Konstantin Danilov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.