Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-11 Thread Roman Vyalov
Mike,
2 jobs for Icehouse and Juno equal 2 different repository with packages for
Fuel 6.0. This can be problem for current osci workflow.
For example:  We need building new packages. Which repository we must put
packages? to icehouse or/and Juno ?
if new packages will break icehouse repository, but required for Juno ...

On Wed, Sep 10, 2014 at 12:39 AM, Mike Scherbakov mscherba...@mirantis.com
wrote:

 Aleksandra,
 you've got us exactly right. Fuel CI for OSTF can wait a bit longer, but 4
 fuel-library tests should happen right after we create stable/5.1. Also,
 for Fuel CI for OSTF - I don't think it's actually necessary to support
 5.0 envs.

 Your questions:

1. Create jobs for both Icehouse and Juno, but it doesn't make sense
to do staging for Juno till it starts to pass deployment in HA mode. Once
it passes deployment in HA, staging should be enabled. Then, once it passes
OSTF - we extend criteria, and pass only those mirrors which also pass OSTF
phase
2. Once Juno starts to pass BVT with OSTF check enabled, I think we
can disable Icehouse checks. Not sure about fuel-library tests on Fuel CI
with Icehouse - we might want to continue using them.

 Thanks,

 On Wed, Sep 10, 2014 at 12:22 AM, Aleksandra Fedorova 
 afedor...@mirantis.com wrote:

  Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
 Icehouse packages; 2 non-voting, with Juno packages.
  Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
 actually before Juno becomes stable. We will be able to run 2 sets of BVTs
 (against Icehouse and Juno), and it means that we will be able to see
 almost immediately if something in nailgun/astute/puppet integration broke.
 For Juno builds it's going to be all red initially.

 Let me rephrase:

 We keep one Fuel master branch for two OpenStack releases. And we make
 sure that Fuel master code is compatible with both of them. And we use
 current release (Icehouse) as a reference for test results of upcoming
 release, till we obtain stable enough reference point in Juno itself.
 Moreover we'd like to have OSTF code running on all previous Fuel releases.

 Changes to CI workflow look as follows:

 Nightly builds:
   1) We build two mirrors: one for Icehouse and one for Juno.
   2) From each mirror we build Fuel ISO using exactly the same fuel
 master branch code.
   3) Then we run BVT tests on both (using the same fuel-main code for
 system tests).
   4) If Icehouse BVT tests pass, we deploy both ISO images (even with
 failed Juno tests) onto Fuel CI.

 On Fuel CI we should run:
   - 4 fuel-library tests (revert master node, inject fuel-library code in
 master node and run deployment):
 2 (ubuntu and centos) voting Icehouse tests and 2 non-voting
 Juno tests
   - 5 OSTF tests (revert deployed environment, inject OSTF code into
 master node, run OSTF):
 voting on 4.1, 5.0, 5.1, master/icehouse and non-voting on
 master/Juno
   - other tests, which don't use prebuilt environment, work as before

 The major action point here would be OSTF tests, as we don't have yet
 working implementation of injecting OSTF code into deployed environment.
 And we don't run any tests on old environments.


 Questions:

 1) How should we test mirrors?

 Current master mirrors go through the 4 hours test cycle involving Fuel
 ISO build:
   1. we build temporary mirror
   2. build custom iso from it
   3. run two custom bvt jobs
   4. if they pass we move mirror to stable and sitch to it for our
 primary fuel_master_iso

 Should we test only Icehouse mirrors, or both, but ignoring again failed
 BVT for Juno? Maybe we should enable these tests only later in release
 cycle, say, after SCF?

 2) It is not clear for me when and how we will switch from supporting two
 releases back to one.
 Should we add one more milestone to our release process? The Switching
 point, when we disable and remove Icehouse tasks and move to Juno
 completely? I guess it should happen before next SCF?



 On Tue, Sep 9, 2014 at 9:52 PM, Mike Scherbakov mscherba...@mirantis.com
  wrote:

  What we need to achieve that is have 2 build series based on Fuel
 master: one with Icehouse packages, and one with Juno, and, as Mike
 proposed, keep our manifests backwards compatible with Icehouse.
 Exactly. Our Fuel CI can do 4 builds against puppet modules: 2 voting,
 with Icehouse packages; 2 non-voting, with Juno packages.

 Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
 actually before Juno becomes stable. We will be able to run 2 sets of BVTs
 (against Icehouse and Juno), and it means that we will be able to see
 almost immediately if something in nailgun/astute/puppet integration broke.
 For Juno builds it's going to be all red initially.

 Another suggestion would be to lower green switch in BVTs for Juno:
 first, when it passes deployment; and then, if it finally passes OSTF.

 I'd like to hear QA  DevOps opinion on all the above. Immediately we
 would need 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-11 Thread Mike Scherbakov
What would be your suggestions then on the issue? We want to avoid breaking
of our fuel-library and other code without knowing about it, so it's not an
option to simply forget about compatibility with Icehouse packages.

And I'm actually +1 for introducing Kilo CI jobs as soon as we can, so to
keep our CI cycle very close to the upstream.

On Thu, Sep 11, 2014 at 11:22 PM, Roman Vyalov rvya...@mirantis.com wrote:

 Mike,
 2 jobs for Icehouse and Juno equal 2 different repository with packages
 for Fuel 6.0. This can be problem for current osci workflow.
 For example:  We need building new packages. Which repository we must put
 packages? to icehouse or/and Juno ?
 if new packages will break icehouse repository, but required for Juno ...

 On Wed, Sep 10, 2014 at 12:39 AM, Mike Scherbakov 
 mscherba...@mirantis.com wrote:

 Aleksandra,
 you've got us exactly right. Fuel CI for OSTF can wait a bit longer, but 4
 fuel-library tests should happen right after we create stable/5.1. Also,
 for Fuel CI for OSTF - I don't think it's actually necessary to support
 5.0 envs.

 Your questions:

1. Create jobs for both Icehouse and Juno, but it doesn't make sense
to do staging for Juno till it starts to pass deployment in HA mode. Once
it passes deployment in HA, staging should be enabled. Then, once it 
 passes
OSTF - we extend criteria, and pass only those mirrors which also pass 
 OSTF
phase
2. Once Juno starts to pass BVT with OSTF check enabled, I think we
can disable Icehouse checks. Not sure about fuel-library tests on Fuel CI
with Icehouse - we might want to continue using them.

 Thanks,

 On Wed, Sep 10, 2014 at 12:22 AM, Aleksandra Fedorova 
 afedor...@mirantis.com wrote:

  Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
 Icehouse packages; 2 non-voting, with Juno packages.
  Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
 actually before Juno becomes stable. We will be able to run 2 sets of BVTs
 (against Icehouse and Juno), and it means that we will be able to see
 almost immediately if something in nailgun/astute/puppet integration broke.
 For Juno builds it's going to be all red initially.

 Let me rephrase:

 We keep one Fuel master branch for two OpenStack releases. And we make
 sure that Fuel master code is compatible with both of them. And we use
 current release (Icehouse) as a reference for test results of upcoming
 release, till we obtain stable enough reference point in Juno itself.
 Moreover we'd like to have OSTF code running on all previous Fuel releases.

 Changes to CI workflow look as follows:

 Nightly builds:
   1) We build two mirrors: one for Icehouse and one for Juno.
   2) From each mirror we build Fuel ISO using exactly the same fuel
 master branch code.
   3) Then we run BVT tests on both (using the same fuel-main code for
 system tests).
   4) If Icehouse BVT tests pass, we deploy both ISO images (even with
 failed Juno tests) onto Fuel CI.

 On Fuel CI we should run:
   - 4 fuel-library tests (revert master node, inject fuel-library code
 in master node and run deployment):
 2 (ubuntu and centos) voting Icehouse tests and 2 non-voting
 Juno tests
   - 5 OSTF tests (revert deployed environment, inject OSTF code into
 master node, run OSTF):
 voting on 4.1, 5.0, 5.1, master/icehouse and non-voting on
 master/Juno
   - other tests, which don't use prebuilt environment, work as before

 The major action point here would be OSTF tests, as we don't have yet
 working implementation of injecting OSTF code into deployed environment.
 And we don't run any tests on old environments.


 Questions:

 1) How should we test mirrors?

 Current master mirrors go through the 4 hours test cycle involving Fuel
 ISO build:
   1. we build temporary mirror
   2. build custom iso from it
   3. run two custom bvt jobs
   4. if they pass we move mirror to stable and sitch to it for our
 primary fuel_master_iso

 Should we test only Icehouse mirrors, or both, but ignoring again failed
 BVT for Juno? Maybe we should enable these tests only later in release
 cycle, say, after SCF?

 2) It is not clear for me when and how we will switch from supporting
 two releases back to one.
 Should we add one more milestone to our release process? The Switching
 point, when we disable and remove Icehouse tasks and move to Juno
 completely? I guess it should happen before next SCF?



 On Tue, Sep 9, 2014 at 9:52 PM, Mike Scherbakov 
 mscherba...@mirantis.com wrote:

  What we need to achieve that is have 2 build series based on Fuel
 master: one with Icehouse packages, and one with Juno, and, as Mike
 proposed, keep our manifests backwards compatible with Icehouse.
 Exactly. Our Fuel CI can do 4 builds against puppet modules: 2 voting,
 with Icehouse packages; 2 non-voting, with Juno packages.

 Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
 actually before Juno becomes stable. We will be able to run 2 sets of 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-11 Thread Dmitry Borodaenko
Roman,

In the workflow with 2 package repositories per 1 fuel branch set
(e.g. icehouse  juno for 6.0, or juno  kilo later in 6.0 release
cycle), we should aim to keep packages targeted for both repositories
as close as possible, so default mode of operation should be to put
new packages in both repositories.

Use cases:

1. We need new packages for Juno, we don't expect them to break
Icehouse. We should put packages to both repos: if there's impact on
Icehouse we want to know sooner rather than later.

2. We need to add a patch to a package. If it's not a backport of
bugfix from Juno, most likely the bug is present in both Icehouse and
Juno, and so should be the fix.

3. We need to make a packaging change (init script change, add a
missing file, modify dependencies, etc.). Unless a change is
explicitly Juno specific (e.g. config option that doesn't exist in
Icehouse, or versioned dependency incompatible with Icehouse), it
should be applied to both releases.

The flow should be pretty much the same as master-stable rule we have
in git: apply the change to Juno, backport to Icehouse.

-DmitryB




On Thu, Sep 11, 2014 at 12:22 PM, Roman Vyalov rvya...@mirantis.com wrote:
 Mike,
 2 jobs for Icehouse and Juno equal 2 different repository with packages for
 Fuel 6.0. This can be problem for current osci workflow.
 For example:  We need building new packages. Which repository we must put
 packages? to icehouse or/and Juno ?
 if new packages will break icehouse repository, but required for Juno ...

 On Wed, Sep 10, 2014 at 12:39 AM, Mike Scherbakov mscherba...@mirantis.com
 wrote:

 Aleksandra,
 you've got us exactly right. Fuel CI for OSTF can wait a bit longer, but
 4 fuel-library tests should happen right after we create stable/5.1. Also,
 for Fuel CI for OSTF - I don't think it's actually necessary to support 5.0
 envs.

 Your questions:

 Create jobs for both Icehouse and Juno, but it doesn't make sense to do
 staging for Juno till it starts to pass deployment in HA mode. Once it
 passes deployment in HA, staging should be enabled. Then, once it passes
 OSTF - we extend criteria, and pass only those mirrors which also pass OSTF
 phase
 Once Juno starts to pass BVT with OSTF check enabled, I think we can
 disable Icehouse checks. Not sure about fuel-library tests on Fuel CI with
 Icehouse - we might want to continue using them.

 Thanks,

 On Wed, Sep 10, 2014 at 12:22 AM, Aleksandra Fedorova
 afedor...@mirantis.com wrote:

  Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
  Icehouse packages; 2 non-voting, with Juno packages.
  Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
  actually before Juno becomes stable. We will be able to run 2 sets of BVTs
  (against Icehouse and Juno), and it means that we will be able to see 
  almost
  immediately if something in nailgun/astute/puppet integration broke. For
  Juno builds it's going to be all red initially.

 Let me rephrase:

 We keep one Fuel master branch for two OpenStack releases. And we make
 sure that Fuel master code is compatible with both of them. And we use
 current release (Icehouse) as a reference for test results of upcoming
 release, till we obtain stable enough reference point in Juno itself.
 Moreover we'd like to have OSTF code running on all previous Fuel releases.

 Changes to CI workflow look as follows:

 Nightly builds:
   1) We build two mirrors: one for Icehouse and one for Juno.
   2) From each mirror we build Fuel ISO using exactly the same fuel
 master branch code.
   3) Then we run BVT tests on both (using the same fuel-main code for
 system tests).
   4) If Icehouse BVT tests pass, we deploy both ISO images (even with
 failed Juno tests) onto Fuel CI.

 On Fuel CI we should run:
   - 4 fuel-library tests (revert master node, inject fuel-library code in
 master node and run deployment):
 2 (ubuntu and centos) voting Icehouse tests and 2 non-voting
 Juno tests
   - 5 OSTF tests (revert deployed environment, inject OSTF code into
 master node, run OSTF):
 voting on 4.1, 5.0, 5.1, master/icehouse and non-voting on
 master/Juno
   - other tests, which don't use prebuilt environment, work as before

 The major action point here would be OSTF tests, as we don't have yet
 working implementation of injecting OSTF code into deployed environment. And
 we don't run any tests on old environments.


 Questions:

 1) How should we test mirrors?

 Current master mirrors go through the 4 hours test cycle involving Fuel
 ISO build:
   1. we build temporary mirror
   2. build custom iso from it
   3. run two custom bvt jobs
   4. if they pass we move mirror to stable and sitch to it for our
 primary fuel_master_iso

 Should we test only Icehouse mirrors, or both, but ignoring again failed
 BVT for Juno? Maybe we should enable these tests only later in release
 cycle, say, after SCF?

 2) It is not clear for me when and how we will switch from supporting two
 releases back to one.
 Should 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Mike Scherbakov
+1 to DmitryB, I think in this particular time and case we should open
stable/5.1. But not to call it HCF [1].

Though I think we should retrospect our approaches here.

   1. Sometimes we can squash 30 bugs a day, and formally reach HCF. Though
   the day after we will get 30 New bugs from QA. We might want to reconsider
   the whole approach on criteria, and come up with flow instead. Like if we
   have =5 High bugs at the moment, and over last 3 days we were seeing 10
   confirmed High/Critical bugs, then we can call for HCF (if 60 bugs in 3
   last days, then no way for HCF)
   2. Consumption of new OpenStack release is hard and will be as such
   unless we will be using Fuel in gating process for every patch being pushed
   to OpenStack upstream. We want to deploy Juno now for 6.0, and the only way
   to do it now - is to build all packages, try to run it, observe issues,
   fix,  run again, observe other issues... - and this process continues for
   many iterations before we get stable ISO which passes BVTs. It is obvious,
   that if we drop the Juno packages in, then our master is going to be broken.
   If we do any other feature development, then we don't know whether it's
   because Juno or that another feature. What should we do then?


My suggestion on #2 is that we could keep backward compatibility with
Icehouse code (on puppet side), and can continue to use BVT's, other
testing against master branch using both Icehouse packages and Juno. Thus
we can keep using gating process for fuel library, relying on stable
Icehouse version.

As for immediate action, again, I'm in favor of creating stable/5.1 in
order to unblock feature development in master, while we are fixing last
issues with OpenStack patching.

[1] https://wiki.openstack.org/wiki/Fuel/Hard_Code_Freeze


On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko dborodae...@mirantis.com
wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be a disruption, but not an additional effort.

 2) All commits targeted for 5.1 will have to be proposed for two
 branches (master and stable/5.1) instead of just one (master). This
 will require additional effort, but I think that it is significantly
 smaller than the cost of spinning our wheels on 6.0 efforts.

 -DmitryB


 On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
 dmescherya...@mirantis.com wrote:
  Hello Fuelers,
 
  Right now we have the following policy in place: the branches for a
  release are opened only after its 'parent' release have reached hard
  code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 and
  6.0.
 
  And that is the problem: if parent release is delayed, we can't
  properly start development of a child release because we don't have
  branches to commit. That is current issue with 6.0: we already started
  to work on pushing Juno in to 6.0, but if we are to make changes to
  our deployment code we have nowhere to store them.
 
  IMHO the issue could easily be resolved by creation of pre-release
  branches, which are merged together with parent branches once the
  

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Igor Marnat
Mike,
just to clarify - do we want consider this as an exception, which is
not going to be repeated next release? If not, we might want to
consider updating the statement It is the time when master opens for
next release changes, including features. in [1]. If I got you
correct, we are going to open master for development of new features
now.

[1] https://wiki.openstack.org/wiki/Fuel/Hard_Code_Freeze
Regards,
Igor Marnat


On Tue, Sep 9, 2014 at 12:07 PM, Mike Scherbakov
mscherba...@mirantis.com wrote:
 +1 to DmitryB, I think in this particular time and case we should open
 stable/5.1. But not to call it HCF [1].

 Though I think we should retrospect our approaches here.

 Sometimes we can squash 30 bugs a day, and formally reach HCF. Though the
 day after we will get 30 New bugs from QA. We might want to reconsider the
 whole approach on criteria, and come up with flow instead. Like if we have
 =5 High bugs at the moment, and over last 3 days we were seeing 10
 confirmed High/Critical bugs, then we can call for HCF (if 60 bugs in 3 last
 days, then no way for HCF)
 Consumption of new OpenStack release is hard and will be as such unless we
 will be using Fuel in gating process for every patch being pushed to
 OpenStack upstream. We want to deploy Juno now for 6.0, and the only way to
 do it now - is to build all packages, try to run it, observe issues, fix,
 run again, observe other issues... - and this process continues for many
 iterations before we get stable ISO which passes BVTs. It is obvious, that
 if we drop the Juno packages in, then our master is going to be broken.
 If we do any other feature development, then we don't know whether it's
 because Juno or that another feature. What should we do then?

 My suggestion on #2 is that we could keep backward compatibility with
 Icehouse code (on puppet side), and can continue to use BVT's, other testing
 against master branch using both Icehouse packages and Juno. Thus we can
 keep using gating process for fuel library, relying on stable Icehouse
 version.

 As for immediate action, again, I'm in favor of creating stable/5.1 in order
 to unblock feature development in master, while we are fixing last issues
 with OpenStack patching.

 [1] https://wiki.openstack.org/wiki/Fuel/Hard_Code_Freeze


 On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko dborodae...@mirantis.com
 wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be a disruption, but not an additional effort.

 2) All commits targeted for 5.1 will have to be proposed for two
 branches (master and stable/5.1) instead of just one (master). This
 will require additional effort, but I think that it is significantly
 smaller than the cost of spinning our wheels on 6.0 efforts.

 -DmitryB


 On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
 dmescherya...@mirantis.com wrote:
  Hello Fuelers,
 
  Right now we have the following policy in place: the branches for a
  release are opened only after its 'parent' release have reached hard
  code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Mike Scherbakov
Currently I think we should take it as an exception, and discuss two points
which I brought up. Obviously, if we open stable/5.1, then we are opening
master for new features.

We will modify HCF definition once we settle on final decision.

Thanks,

On Tue, Sep 9, 2014 at 1:02 PM, Igor Marnat imar...@mirantis.com wrote:

 Mike,
 just to clarify - do we want consider this as an exception, which is
 not going to be repeated next release? If not, we might want to
 consider updating the statement It is the time when master opens for
 next release changes, including features. in [1]. If I got you
 correct, we are going to open master for development of new features
 now.

 [1] https://wiki.openstack.org/wiki/Fuel/Hard_Code_Freeze
 Regards,
 Igor Marnat


 On Tue, Sep 9, 2014 at 12:07 PM, Mike Scherbakov
 mscherba...@mirantis.com wrote:
  +1 to DmitryB, I think in this particular time and case we should open
  stable/5.1. But not to call it HCF [1].
 
  Though I think we should retrospect our approaches here.
 
  Sometimes we can squash 30 bugs a day, and formally reach HCF. Though the
  day after we will get 30 New bugs from QA. We might want to reconsider
 the
  whole approach on criteria, and come up with flow instead. Like if we
 have
  =5 High bugs at the moment, and over last 3 days we were seeing 10
  confirmed High/Critical bugs, then we can call for HCF (if 60 bugs in 3
 last
  days, then no way for HCF)
  Consumption of new OpenStack release is hard and will be as such unless
 we
  will be using Fuel in gating process for every patch being pushed to
  OpenStack upstream. We want to deploy Juno now for 6.0, and the only way
 to
  do it now - is to build all packages, try to run it, observe issues, fix,
  run again, observe other issues... - and this process continues for many
  iterations before we get stable ISO which passes BVTs. It is obvious,
 that
  if we drop the Juno packages in, then our master is going to be broken.
  If we do any other feature development, then we don't know whether it's
  because Juno or that another feature. What should we do then?
 
  My suggestion on #2 is that we could keep backward compatibility with
  Icehouse code (on puppet side), and can continue to use BVT's, other
 testing
  against master branch using both Icehouse packages and Juno. Thus we can
  keep using gating process for fuel library, relying on stable Icehouse
  version.
 
  As for immediate action, again, I'm in favor of creating stable/5.1 in
 order
  to unblock feature development in master, while we are fixing last issues
  with OpenStack patching.
 
  [1] https://wiki.openstack.org/wiki/Fuel/Hard_Code_Freeze
 
 
  On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko 
 dborodae...@mirantis.com
  wrote:
 
  TL;DR: Yes, our work on 6.0 features is currently blocked and it is
  becoming a major problem. No, I don't think we should create
  pre-release or feature branches. Instead, we should create stable/5.1
  branches and open master for 6.0 work.
 
  We have reached a point in 5.1 release cycle where the scope of issues
  we are willing to address in this release is narrow enough to not
  require full attention of the whole team. We have engineers working on
  6.0 features, and their work is essentially blocked until they have
  somewhere to commit their changes.
 
  Simply creating new branches is not even close to solving this
  problem: we have a whole CI infrastructure around every active release
  series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
  commits, package repository mirrors updates, ISO image builds, smoke,
  build verification, and swarm tests for ISO images, documentation
  builds, etc. A branch without all that infrastructure isn't any better
  than current status quo: every developer tracking their own 6.0 work
  locally.
 
  Unrelated to all that, we also had a lot of very negative experience
  with feature branches in the past [0] [1], which is why we have
  decided to follow the OpenStack branching strategy: commit all feature
  changes directly to master and track bugfixes for stable releases in
  stable/* branches.
 
  [0] https://lists.launchpad.net/fuel-dev/msg00127.html
  [1] https://lists.launchpad.net/fuel-dev/msg00028.html
 
  I'm also against declaring a hard code freeze with exceptions, HCF
  should remain tied to our ability to declare a release candidate. If
  we can't release with the bugs we already know about, declaring HCF
  before fixing these bugs would be an empty gesture.
 
  Creating stable/5.1 now instead of waiting for hard code freeze for
  5.1 will cost us two things:
 
  1) DevOps team will have to update our CI infrastructure for one more
  release series. It's something we have to do for 6.0 sooner or later,
  so this may be a disruption, but not an additional effort.
 
  2) All commits targeted for 5.1 will have to be proposed for two
  branches (master and stable/5.1) instead of just one (master). This
  will require additional effort, but 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Aleksandra Fedorova
As I understand your proposal, we need to split our HCF milestone into two
check points: Branching Point and HCF itself.

Branching point should happen somewhere in between SCF and HCF. And though
It may coincide with HCF, it needs its own list of requirements. This will
give us the possibility to untie two events and make a separate decision on
branching without enforcing all HCF criteria.

From the DevOps point of view it changes almost nothing, it just adds a bit
more discussion items on the management side and slight modifications to
our checklists.


On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko dborodae...@mirantis.com
wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be a disruption, but not an additional effort.

 2) All commits targeted for 5.1 will have to be proposed for two
 branches (master and stable/5.1) instead of just one (master). This
 will require additional effort, but I think that it is significantly
 smaller than the cost of spinning our wheels on 6.0 efforts.

 -DmitryB


 On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
 dmescherya...@mirantis.com wrote:
  Hello Fuelers,
 
  Right now we have the following policy in place: the branches for a
  release are opened only after its 'parent' release have reached hard
  code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 and
  6.0.
 
  And that is the problem: if parent release is delayed, we can't
  properly start development of a child release because we don't have
  branches to commit. That is current issue with 6.0: we already started
  to work on pushing Juno in to 6.0, but if we are to make changes to
  our deployment code we have nowhere to store them.
 
  IMHO the issue could easily be resolved by creation of pre-release
  branches, which are merged together with parent branches once the
  parent reaches HCF. Say, we use branch 'pre-6.0' for initial
  development of 6.0. Once 5.1 reaches HCF, we merge pre-6.0 into master
  and continue development here. After that pre-6.0 is abandoned.
 
  What do you think?
 
  Thanks,
 
  Dmitry
 
  ___
  OpenStack-dev mailing list
  OpenStack-dev@lists.openstack.org
  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 --
 Dmitry Borodaenko

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




-- 
Aleksandra Fedorova
bookwar
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Mike Scherbakov
Thanks Alexandra.

We land a few patches a day currently, so I think we can open stable
branch. If we see no serious objections in next 12 hours, let's do it. We
would need to immediately notify everyone in mailing list - that for every
patch for 5.1, it should go first to master, and then to stable/5.1.

Is everything ready from DevOps, OSCI (packaging) side to do this? Fuel CI,
OBS, etc.?

On Tue, Sep 9, 2014 at 2:28 PM, Aleksandra Fedorova afedor...@mirantis.com
wrote:

 As I understand your proposal, we need to split our HCF milestone into two
 check points: Branching Point and HCF itself.

 Branching point should happen somewhere in between SCF and HCF. And though
 It may coincide with HCF, it needs its own list of requirements. This will
 give us the possibility to untie two events and make a separate decision on
 branching without enforcing all HCF criteria.

 From the DevOps point of view it changes almost nothing, it just adds a
 bit more discussion items on the management side and slight modifications
 to our checklists.


 On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko 
 dborodae...@mirantis.com wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be a disruption, but not an additional effort.

 2) All commits targeted for 5.1 will have to be proposed for two
 branches (master and stable/5.1) instead of just one (master). This
 will require additional effort, but I think that it is significantly
 smaller than the cost of spinning our wheels on 6.0 efforts.

 -DmitryB


 On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
 dmescherya...@mirantis.com wrote:
  Hello Fuelers,
 
  Right now we have the following policy in place: the branches for a
  release are opened only after its 'parent' release have reached hard
  code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 and
  6.0.
 
  And that is the problem: if parent release is delayed, we can't
  properly start development of a child release because we don't have
  branches to commit. That is current issue with 6.0: we already started
  to work on pushing Juno in to 6.0, but if we are to make changes to
  our deployment code we have nowhere to store them.
 
  IMHO the issue could easily be resolved by creation of pre-release
  branches, which are merged together with parent branches once the
  parent reaches HCF. Say, we use branch 'pre-6.0' for initial
  development of 6.0. Once 5.1 reaches HCF, we merge pre-6.0 into master
  and continue development here. After that pre-6.0 is abandoned.
 
  What do you think?
 
  Thanks,
 
  Dmitry
 
  ___
  OpenStack-dev mailing list
  OpenStack-dev@lists.openstack.org
  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 --
 Dmitry Borodaenko

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev




 --
 Aleksandra Fedorova
 bookwar

 ___
 OpenStack-dev mailing list
 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Dmitry Borodaenko
+1 on adding flow based criteria for HCF and Branching Point. Tracking
down how many bugs was reported in LP on a given day is a bit tricky,
so I think in both cases it would be easier to rely on flow of commits
(which after Soft Code Freeze becomes a direct indicator of how many
bugs are fixed per day).

For HCF, not having merged any code changes for 24 hours (on top of
meeting the bug count criteria) would be a solid proof of code
stabilization.

For Branching Point, the threshold has to be more relaxed, for
example, less than 10 commits across all our code repositories within
last 24 hours.

I agree that landing Juno packages right now is going be disruptive. I
continue to think that the only way to address this long term is to
have a parallel OpenStack master branch based Fuel/MOS build series.
What we need to achieve that is have 2 build series based on Fuel
master: one with Icehouse packages, and one with Juno, and, as Mike
proposed, keep our manifests backwards compatible with Icehouse. That
way, we can land changes unrelated to Juno into Fuel master and debug
them using the Icehouse based build series, and land changes needed
for Juno integration into the same Fuel master branch, and debug them
in Juno based build series.

In order to minimize impact of non Juno related changes on Juno
integration, we should minimize breakage of Icehouse based builds. Two
ways to address that problem would be to serialize landing of major
changes (so that only one feature at a time can be blamed for
breakage), and agressively revert changes that cause BVT failure if
they are not fixed within 24 hours.

As soon as Juno builds reach the same level of stability of Icehouse,
we can drop the Icehouse based builds and introduce Kilo based builds
instead.

Thoughts?
-DmitryB


On Tue, Sep 9, 2014 at 7:27 AM, Mike Scherbakov
mscherba...@mirantis.com wrote:
 Thanks Alexandra.

 We land a few patches a day currently, so I think we can open stable branch.
 If we see no serious objections in next 12 hours, let's do it. We would need
 to immediately notify everyone in mailing list - that for every patch for
 5.1, it should go first to master, and then to stable/5.1.

 Is everything ready from DevOps, OSCI (packaging) side to do this? Fuel CI,
 OBS, etc.?

 On Tue, Sep 9, 2014 at 2:28 PM, Aleksandra Fedorova afedor...@mirantis.com
 wrote:

 As I understand your proposal, we need to split our HCF milestone into two
 check points: Branching Point and HCF itself.

 Branching point should happen somewhere in between SCF and HCF. And though
 It may coincide with HCF, it needs its own list of requirements. This will
 give us the possibility to untie two events and make a separate decision on
 branching without enforcing all HCF criteria.

 From the DevOps point of view it changes almost nothing, it just adds a
 bit more discussion items on the management side and slight modifications to
 our checklists.


 On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko
 dborodae...@mirantis.com wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Roman Vyalov
All OSCI action items for prepare HCF check list  has been done

On Tue, Sep 9, 2014 at 6:27 PM, Mike Scherbakov mscherba...@mirantis.com
wrote:

 Thanks Alexandra.

 We land a few patches a day currently, so I think we can open stable
 branch. If we see no serious objections in next 12 hours, let's do it. We
 would need to immediately notify everyone in mailing list - that for every
 patch for 5.1, it should go first to master, and then to stable/5.1.

 Is everything ready from DevOps, OSCI (packaging) side to do this? Fuel
 CI, OBS, etc.?

 On Tue, Sep 9, 2014 at 2:28 PM, Aleksandra Fedorova 
 afedor...@mirantis.com wrote:

 As I understand your proposal, we need to split our HCF milestone into
 two check points: Branching Point and HCF itself.

 Branching point should happen somewhere in between SCF and HCF. And
 though It may coincide with HCF, it needs its own list of requirements.
 This will give us the possibility to untie two events and make a separate
 decision on branching without enforcing all HCF criteria.

 From the DevOps point of view it changes almost nothing, it just adds a
 bit more discussion items on the management side and slight modifications
 to our checklists.


 On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko 
 dborodae...@mirantis.com wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be a disruption, but not an additional effort.

 2) All commits targeted for 5.1 will have to be proposed for two
 branches (master and stable/5.1) instead of just one (master). This
 will require additional effort, but I think that it is significantly
 smaller than the cost of spinning our wheels on 6.0 efforts.

 -DmitryB


 On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
 dmescherya...@mirantis.com wrote:
  Hello Fuelers,
 
  Right now we have the following policy in place: the branches for a
  release are opened only after its 'parent' release have reached hard
  code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 and
  6.0.
 
  And that is the problem: if parent release is delayed, we can't
  properly start development of a child release because we don't have
  branches to commit. That is current issue with 6.0: we already started
  to work on pushing Juno in to 6.0, but if we are to make changes to
  our deployment code we have nowhere to store them.
 
  IMHO the issue could easily be resolved by creation of pre-release
  branches, which are merged together with parent branches once the
  parent reaches HCF. Say, we use branch 'pre-6.0' for initial
  development of 6.0. Once 5.1 reaches HCF, we merge pre-6.0 into master
  and continue development here. After that pre-6.0 is abandoned.
 
  What do you think?
 
  Thanks,
 
  Dmitry
 
  ___
  OpenStack-dev mailing list
  OpenStack-dev@lists.openstack.org
  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 --
 Dmitry Borodaenko

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Mike Scherbakov
 What we need to achieve that is have 2 build series based on Fuel
master: one with Icehouse packages, and one with Juno, and, as Mike
proposed, keep our manifests backwards compatible with Icehouse.
Exactly. Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
Icehouse packages; 2 non-voting, with Juno packages.

Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno) actually
before Juno becomes stable. We will be able to run 2 sets of BVTs (against
Icehouse and Juno), and it means that we will be able to see almost
immediately if something in nailgun/astute/puppet integration broke. For
Juno builds it's going to be all red initially.

Another suggestion would be to lower green switch in BVTs for Juno: first,
when it passes deployment; and then, if it finally passes OSTF.

I'd like to hear QA  DevOps opinion on all the above. Immediately we would
need just standard stuff which is in checklists for OSCI  DevOps teams,
and ideally soon after that - ability to have Fuel CI running 4 builds, not
2, against our master, as mentioned above.

On Tue, Sep 9, 2014 at 9:28 PM, Roman Vyalov rvya...@mirantis.com wrote:

 All OSCI action items for prepare HCF check list  has been done


 On Tue, Sep 9, 2014 at 6:27 PM, Mike Scherbakov mscherba...@mirantis.com
 wrote:

 Thanks Alexandra.

 We land a few patches a day currently, so I think we can open stable
 branch. If we see no serious objections in next 12 hours, let's do it. We
 would need to immediately notify everyone in mailing list - that for every
 patch for 5.1, it should go first to master, and then to stable/5.1.

 Is everything ready from DevOps, OSCI (packaging) side to do this? Fuel
 CI, OBS, etc.?

 On Tue, Sep 9, 2014 at 2:28 PM, Aleksandra Fedorova 
 afedor...@mirantis.com wrote:

 As I understand your proposal, we need to split our HCF milestone into
 two check points: Branching Point and HCF itself.

 Branching point should happen somewhere in between SCF and HCF. And
 though It may coincide with HCF, it needs its own list of requirements.
 This will give us the possibility to untie two events and make a separate
 decision on branching without enforcing all HCF criteria.

 From the DevOps point of view it changes almost nothing, it just adds a
 bit more discussion items on the management side and slight modifications
 to our checklists.


 On Tue, Sep 9, 2014 at 5:55 AM, Dmitry Borodaenko 
 dborodae...@mirantis.com wrote:

 TL;DR: Yes, our work on 6.0 features is currently blocked and it is
 becoming a major problem. No, I don't think we should create
 pre-release or feature branches. Instead, we should create stable/5.1
 branches and open master for 6.0 work.

 We have reached a point in 5.1 release cycle where the scope of issues
 we are willing to address in this release is narrow enough to not
 require full attention of the whole team. We have engineers working on
 6.0 features, and their work is essentially blocked until they have
 somewhere to commit their changes.

 Simply creating new branches is not even close to solving this
 problem: we have a whole CI infrastructure around every active release
 series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
 commits, package repository mirrors updates, ISO image builds, smoke,
 build verification, and swarm tests for ISO images, documentation
 builds, etc. A branch without all that infrastructure isn't any better
 than current status quo: every developer tracking their own 6.0 work
 locally.

 Unrelated to all that, we also had a lot of very negative experience
 with feature branches in the past [0] [1], which is why we have
 decided to follow the OpenStack branching strategy: commit all feature
 changes directly to master and track bugfixes for stable releases in
 stable/* branches.

 [0] https://lists.launchpad.net/fuel-dev/msg00127.html
 [1] https://lists.launchpad.net/fuel-dev/msg00028.html

 I'm also against declaring a hard code freeze with exceptions, HCF
 should remain tied to our ability to declare a release candidate. If
 we can't release with the bugs we already know about, declaring HCF
 before fixing these bugs would be an empty gesture.

 Creating stable/5.1 now instead of waiting for hard code freeze for
 5.1 will cost us two things:

 1) DevOps team will have to update our CI infrastructure for one more
 release series. It's something we have to do for 6.0 sooner or later,
 so this may be a disruption, but not an additional effort.

 2) All commits targeted for 5.1 will have to be proposed for two
 branches (master and stable/5.1) instead of just one (master). This
 will require additional effort, but I think that it is significantly
 smaller than the cost of spinning our wheels on 6.0 efforts.

 -DmitryB


 On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
 dmescherya...@mirantis.com wrote:
  Hello Fuelers,
 
  Right now we have the following policy in place: the branches for a
  release are opened only after its 'parent' release have reached 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Aleksandra Fedorova
 Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
Icehouse packages; 2 non-voting, with Juno packages.
 Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno) actually
before Juno becomes stable. We will be able to run 2 sets of BVTs (against
Icehouse and Juno), and it means that we will be able to see almost
immediately if something in nailgun/astute/puppet integration broke. For
Juno builds it's going to be all red initially.

Let me rephrase:

We keep one Fuel master branch for two OpenStack releases. And we make sure
that Fuel master code is compatible with both of them. And we use current
release (Icehouse) as a reference for test results of upcoming release,
till we obtain stable enough reference point in Juno itself. Moreover we'd
like to have OSTF code running on all previous Fuel releases.

Changes to CI workflow look as follows:

Nightly builds:
  1) We build two mirrors: one for Icehouse and one for Juno.
  2) From each mirror we build Fuel ISO using exactly the same fuel master
branch code.
  3) Then we run BVT tests on both (using the same fuel-main code for
system tests).
  4) If Icehouse BVT tests pass, we deploy both ISO images (even with
failed Juno tests) onto Fuel CI.

On Fuel CI we should run:
  - 4 fuel-library tests (revert master node, inject fuel-library code in
master node and run deployment):
2 (ubuntu and centos) voting Icehouse tests and 2 non-voting
Juno tests
  - 5 OSTF tests (revert deployed environment, inject OSTF code into master
node, run OSTF):
voting on 4.1, 5.0, 5.1, master/icehouse and non-voting on
master/Juno
  - other tests, which don't use prebuilt environment, work as before

The major action point here would be OSTF tests, as we don't have yet
working implementation of injecting OSTF code into deployed environment.
And we don't run any tests on old environments.


Questions:

1) How should we test mirrors?

Current master mirrors go through the 4 hours test cycle involving Fuel ISO
build:
  1. we build temporary mirror
  2. build custom iso from it
  3. run two custom bvt jobs
  4. if they pass we move mirror to stable and sitch to it for our
primary fuel_master_iso

Should we test only Icehouse mirrors, or both, but ignoring again failed
BVT for Juno? Maybe we should enable these tests only later in release
cycle, say, after SCF?

2) It is not clear for me when and how we will switch from supporting two
releases back to one.
Should we add one more milestone to our release process? The Switching
point, when we disable and remove Icehouse tasks and move to Juno
completely? I guess it should happen before next SCF?



On Tue, Sep 9, 2014 at 9:52 PM, Mike Scherbakov mscherba...@mirantis.com
wrote:

  What we need to achieve that is have 2 build series based on Fuel
 master: one with Icehouse packages, and one with Juno, and, as Mike
 proposed, keep our manifests backwards compatible with Icehouse.
 Exactly. Our Fuel CI can do 4 builds against puppet modules: 2 voting,
 with Icehouse packages; 2 non-voting, with Juno packages.

 Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno) actually
 before Juno becomes stable. We will be able to run 2 sets of BVTs (against
 Icehouse and Juno), and it means that we will be able to see almost
 immediately if something in nailgun/astute/puppet integration broke. For
 Juno builds it's going to be all red initially.

 Another suggestion would be to lower green switch in BVTs for Juno: first,
 when it passes deployment; and then, if it finally passes OSTF.

 I'd like to hear QA  DevOps opinion on all the above. Immediately we
 would need just standard stuff which is in checklists for OSCI  DevOps
 teams, and ideally soon after that - ability to have Fuel CI running 4
 builds, not 2, against our master, as mentioned above.

 On Tue, Sep 9, 2014 at 9:28 PM, Roman Vyalov rvya...@mirantis.com wrote:

 All OSCI action items for prepare HCF check list  has been done


 On Tue, Sep 9, 2014 at 6:27 PM, Mike Scherbakov mscherba...@mirantis.com
  wrote:

 Thanks Alexandra.

 We land a few patches a day currently, so I think we can open stable
 branch. If we see no serious objections in next 12 hours, let's do it. We
 would need to immediately notify everyone in mailing list - that for every
 patch for 5.1, it should go first to master, and then to stable/5.1.

 Is everything ready from DevOps, OSCI (packaging) side to do this? Fuel
 CI, OBS, etc.?

 On Tue, Sep 9, 2014 at 2:28 PM, Aleksandra Fedorova 
 afedor...@mirantis.com wrote:

 As I understand your proposal, we need to split our HCF milestone into
 two check points: Branching Point and HCF itself.

 Branching point should happen somewhere in between SCF and HCF. And
 though It may coincide with HCF, it needs its own list of requirements.
 This will give us the possibility to untie two events and make a separate
 decision on branching without enforcing all HCF criteria.

 From the DevOps point of view it changes almost 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Mike Scherbakov
Aleksandra,
you've got us exactly right. Fuel CI for OSTF can wait a bit longer, but 4
fuel-library tests should happen right after we create stable/5.1. Also,
for Fuel CI for OSTF - I don't think it's actually necessary to support
5.0 envs.

Your questions:

   1. Create jobs for both Icehouse and Juno, but it doesn't make sense to
   do staging for Juno till it starts to pass deployment in HA mode. Once it
   passes deployment in HA, staging should be enabled. Then, once it passes
   OSTF - we extend criteria, and pass only those mirrors which also pass OSTF
   phase
   2. Once Juno starts to pass BVT with OSTF check enabled, I think we can
   disable Icehouse checks. Not sure about fuel-library tests on Fuel CI with
   Icehouse - we might want to continue using them.

Thanks,

On Wed, Sep 10, 2014 at 12:22 AM, Aleksandra Fedorova 
afedor...@mirantis.com wrote:

  Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
 Icehouse packages; 2 non-voting, with Juno packages.
  Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
 actually before Juno becomes stable. We will be able to run 2 sets of BVTs
 (against Icehouse and Juno), and it means that we will be able to see
 almost immediately if something in nailgun/astute/puppet integration broke.
 For Juno builds it's going to be all red initially.

 Let me rephrase:

 We keep one Fuel master branch for two OpenStack releases. And we make
 sure that Fuel master code is compatible with both of them. And we use
 current release (Icehouse) as a reference for test results of upcoming
 release, till we obtain stable enough reference point in Juno itself.
 Moreover we'd like to have OSTF code running on all previous Fuel releases.

 Changes to CI workflow look as follows:

 Nightly builds:
   1) We build two mirrors: one for Icehouse and one for Juno.
   2) From each mirror we build Fuel ISO using exactly the same fuel master
 branch code.
   3) Then we run BVT tests on both (using the same fuel-main code for
 system tests).
   4) If Icehouse BVT tests pass, we deploy both ISO images (even with
 failed Juno tests) onto Fuel CI.

 On Fuel CI we should run:
   - 4 fuel-library tests (revert master node, inject fuel-library code in
 master node and run deployment):
 2 (ubuntu and centos) voting Icehouse tests and 2 non-voting
 Juno tests
   - 5 OSTF tests (revert deployed environment, inject OSTF code into
 master node, run OSTF):
 voting on 4.1, 5.0, 5.1, master/icehouse and non-voting on
 master/Juno
   - other tests, which don't use prebuilt environment, work as before

 The major action point here would be OSTF tests, as we don't have yet
 working implementation of injecting OSTF code into deployed environment.
 And we don't run any tests on old environments.


 Questions:

 1) How should we test mirrors?

 Current master mirrors go through the 4 hours test cycle involving Fuel
 ISO build:
   1. we build temporary mirror
   2. build custom iso from it
   3. run two custom bvt jobs
   4. if they pass we move mirror to stable and sitch to it for our
 primary fuel_master_iso

 Should we test only Icehouse mirrors, or both, but ignoring again failed
 BVT for Juno? Maybe we should enable these tests only later in release
 cycle, say, after SCF?

 2) It is not clear for me when and how we will switch from supporting two
 releases back to one.
 Should we add one more milestone to our release process? The Switching
 point, when we disable and remove Icehouse tasks and move to Juno
 completely? I guess it should happen before next SCF?



 On Tue, Sep 9, 2014 at 9:52 PM, Mike Scherbakov mscherba...@mirantis.com
 wrote:

  What we need to achieve that is have 2 build series based on Fuel
 master: one with Icehouse packages, and one with Juno, and, as Mike
 proposed, keep our manifests backwards compatible with Icehouse.
 Exactly. Our Fuel CI can do 4 builds against puppet modules: 2 voting,
 with Icehouse packages; 2 non-voting, with Juno packages.

 Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno) actually
 before Juno becomes stable. We will be able to run 2 sets of BVTs (against
 Icehouse and Juno), and it means that we will be able to see almost
 immediately if something in nailgun/astute/puppet integration broke. For
 Juno builds it's going to be all red initially.

 Another suggestion would be to lower green switch in BVTs for Juno:
 first, when it passes deployment; and then, if it finally passes OSTF.

 I'd like to hear QA  DevOps opinion on all the above. Immediately we
 would need just standard stuff which is in checklists for OSCI  DevOps
 teams, and ideally soon after that - ability to have Fuel CI running 4
 builds, not 2, against our master, as mentioned above.

 On Tue, Sep 9, 2014 at 9:28 PM, Roman Vyalov rvya...@mirantis.com
 wrote:

 All OSCI action items for prepare HCF check list  has been done


 On Tue, Sep 9, 2014 at 6:27 PM, Mike Scherbakov 
 mscherba...@mirantis.com wrote:

 Thanks 

Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-09 Thread Dmitry Borodaenko
A clarification on 2: we are going to keep fuel_5.1_* jobs around for
the benefict 5.1.x maintenance releases, that should take care of
Icehouse testing for us, so I don't think we should keep Icehouse jobs
in 6.0/master after Juno is stabilized. What we should do instead is
drop Icehouse jobs and introduce Kilo jobs tracking OpenStack master,
and try to keep manifests in Fuel master forward-compatible with Kilo
through the 6.x release series.

On Tue, Sep 9, 2014 at 1:39 PM, Mike Scherbakov
mscherba...@mirantis.com wrote:
 Aleksandra,
 you've got us exactly right. Fuel CI for OSTF can wait a bit longer, but 4
 fuel-library tests should happen right after we create stable/5.1. Also,
 for Fuel CI for OSTF - I don't think it's actually necessary to support 5.0
 envs.

 Your questions:

 Create jobs for both Icehouse and Juno, but it doesn't make sense to do
 staging for Juno till it starts to pass deployment in HA mode. Once it
 passes deployment in HA, staging should be enabled. Then, once it passes
 OSTF - we extend criteria, and pass only those mirrors which also pass OSTF
 phase
 Once Juno starts to pass BVT with OSTF check enabled, I think we can disable
 Icehouse checks. Not sure about fuel-library tests on Fuel CI with Icehouse
 - we might want to continue using them.

 Thanks,

 On Wed, Sep 10, 2014 at 12:22 AM, Aleksandra Fedorova
 afedor...@mirantis.com wrote:

  Our Fuel CI can do 4 builds against puppet modules: 2 voting, with
  Icehouse packages; 2 non-voting, with Juno packages.
  Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno)
  actually before Juno becomes stable. We will be able to run 2 sets of BVTs
  (against Icehouse and Juno), and it means that we will be able to see 
  almost
  immediately if something in nailgun/astute/puppet integration broke. For
  Juno builds it's going to be all red initially.

 Let me rephrase:

 We keep one Fuel master branch for two OpenStack releases. And we make
 sure that Fuel master code is compatible with both of them. And we use
 current release (Icehouse) as a reference for test results of upcoming
 release, till we obtain stable enough reference point in Juno itself.
 Moreover we'd like to have OSTF code running on all previous Fuel releases.

 Changes to CI workflow look as follows:

 Nightly builds:
   1) We build two mirrors: one for Icehouse and one for Juno.
   2) From each mirror we build Fuel ISO using exactly the same fuel master
 branch code.
   3) Then we run BVT tests on both (using the same fuel-main code for
 system tests).
   4) If Icehouse BVT tests pass, we deploy both ISO images (even with
 failed Juno tests) onto Fuel CI.

 On Fuel CI we should run:
   - 4 fuel-library tests (revert master node, inject fuel-library code in
 master node and run deployment):
 2 (ubuntu and centos) voting Icehouse tests and 2 non-voting
 Juno tests
   - 5 OSTF tests (revert deployed environment, inject OSTF code into
 master node, run OSTF):
 voting on 4.1, 5.0, 5.1, master/icehouse and non-voting on
 master/Juno
   - other tests, which don't use prebuilt environment, work as before

 The major action point here would be OSTF tests, as we don't have yet
 working implementation of injecting OSTF code into deployed environment. And
 we don't run any tests on old environments.


 Questions:

 1) How should we test mirrors?

 Current master mirrors go through the 4 hours test cycle involving Fuel
 ISO build:
   1. we build temporary mirror
   2. build custom iso from it
   3. run two custom bvt jobs
   4. if they pass we move mirror to stable and sitch to it for our
 primary fuel_master_iso

 Should we test only Icehouse mirrors, or both, but ignoring again failed
 BVT for Juno? Maybe we should enable these tests only later in release
 cycle, say, after SCF?

 2) It is not clear for me when and how we will switch from supporting two
 releases back to one.
 Should we add one more milestone to our release process? The Switching
 point, when we disable and remove Icehouse tasks and move to Juno
 completely? I guess it should happen before next SCF?



 On Tue, Sep 9, 2014 at 9:52 PM, Mike Scherbakov mscherba...@mirantis.com
 wrote:

  What we need to achieve that is have 2 build series based on Fuel
 master: one with Icehouse packages, and one with Juno, and, as Mike
 proposed, keep our manifests backwards compatible with Icehouse.
 Exactly. Our Fuel CI can do 4 builds against puppet modules: 2 voting,
 with Icehouse packages; 2 non-voting, with Juno packages.

 Then, I'd suggest to create ISO with 2 releases (Icehouse, Juno) actually
 before Juno becomes stable. We will be able to run 2 sets of BVTs (against
 Icehouse and Juno), and it means that we will be able to see almost
 immediately if something in nailgun/astute/puppet integration broke. For
 Juno builds it's going to be all red initially.

 Another suggestion would be to lower green switch in BVTs for Juno:
 first, when it passes deployment; and then, if it 

[openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-08 Thread Dmitry Mescheryakov
Hello Fuelers,

Right now we have the following policy in place: the branches for a
release are opened only after its 'parent' release have reached hard
code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 and
6.0.

And that is the problem: if parent release is delayed, we can't
properly start development of a child release because we don't have
branches to commit. That is current issue with 6.0: we already started
to work on pushing Juno in to 6.0, but if we are to make changes to
our deployment code we have nowhere to store them.

IMHO the issue could easily be resolved by creation of pre-release
branches, which are merged together with parent branches once the
parent reaches HCF. Say, we use branch 'pre-6.0' for initial
development of 6.0. Once 5.1 reaches HCF, we merge pre-6.0 into master
and continue development here. After that pre-6.0 is abandoned.

What do you think?

Thanks,

Dmitry

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Fuel] Working on 6.0 and new releases in general

2014-09-08 Thread Dmitry Borodaenko
TL;DR: Yes, our work on 6.0 features is currently blocked and it is
becoming a major problem. No, I don't think we should create
pre-release or feature branches. Instead, we should create stable/5.1
branches and open master for 6.0 work.

We have reached a point in 5.1 release cycle where the scope of issues
we are willing to address in this release is narrow enough to not
require full attention of the whole team. We have engineers working on
6.0 features, and their work is essentially blocked until they have
somewhere to commit their changes.

Simply creating new branches is not even close to solving this
problem: we have a whole CI infrastructure around every active release
series (currently 5.1, 5.0, 4.1), including test jobs for gerrit
commits, package repository mirrors updates, ISO image builds, smoke,
build verification, and swarm tests for ISO images, documentation
builds, etc. A branch without all that infrastructure isn't any better
than current status quo: every developer tracking their own 6.0 work
locally.

Unrelated to all that, we also had a lot of very negative experience
with feature branches in the past [0] [1], which is why we have
decided to follow the OpenStack branching strategy: commit all feature
changes directly to master and track bugfixes for stable releases in
stable/* branches.

[0] https://lists.launchpad.net/fuel-dev/msg00127.html
[1] https://lists.launchpad.net/fuel-dev/msg00028.html

I'm also against declaring a hard code freeze with exceptions, HCF
should remain tied to our ability to declare a release candidate. If
we can't release with the bugs we already know about, declaring HCF
before fixing these bugs would be an empty gesture.

Creating stable/5.1 now instead of waiting for hard code freeze for
5.1 will cost us two things:

1) DevOps team will have to update our CI infrastructure for one more
release series. It's something we have to do for 6.0 sooner or later,
so this may be a disruption, but not an additional effort.

2) All commits targeted for 5.1 will have to be proposed for two
branches (master and stable/5.1) instead of just one (master). This
will require additional effort, but I think that it is significantly
smaller than the cost of spinning our wheels on 6.0 efforts.

-DmitryB


On Mon, Sep 8, 2014 at 10:10 AM, Dmitry Mescheryakov
dmescherya...@mirantis.com wrote:
 Hello Fuelers,

 Right now we have the following policy in place: the branches for a
 release are opened only after its 'parent' release have reached hard
 code freeze (HCF). Say, 5.1 release is parent releases for 5.1.1 and
 6.0.

 And that is the problem: if parent release is delayed, we can't
 properly start development of a child release because we don't have
 branches to commit. That is current issue with 6.0: we already started
 to work on pushing Juno in to 6.0, but if we are to make changes to
 our deployment code we have nowhere to store them.

 IMHO the issue could easily be resolved by creation of pre-release
 branches, which are merged together with parent branches once the
 parent reaches HCF. Say, we use branch 'pre-6.0' for initial
 development of 6.0. Once 5.1 reaches HCF, we merge pre-6.0 into master
 and continue development here. After that pre-6.0 is abandoned.

 What do you think?

 Thanks,

 Dmitry

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



-- 
Dmitry Borodaenko

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev