cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Huang <>
Subject RE: [MERGE][ACS41] javelin to master
Date Sat, 26 Jan 2013 15:03:59 GMT
Hi Marcus,

> For mt own clarification, the storage refactoring code is in javelin, but
> cloudstack is currently not using it, correct? At this point I was thinking
> to myself that the storage refactor was not going to make 4.1, due to some
> of the discussions and updates. Or if it did that we wouldn't have time to
> work on making anything utilize it.

Yes.  The storage refactoring code was written as a completely new project.  It didn't touch
the existing code.  The reason is because it is very different than the current code set.
 The current code set mixes in orchestration and provisioning and forces provisioning to happen
on the hypervisor and, as John pointed out in other posts, forces file system concepts.  The
new storage refactoring code does not do that.  Therefore, we decided to write a completely
new storage orchestration engine.  In some sense, refactoring is really an incorrect term
for it.

The new storage engine pulled in the usage of Spring.  That's why we decided to convert all
of CloudStack to use Spring for di and aop in javelin.  In terms of side effect, we can consider
the current javelin branch as a Spring conversion branch because the new storage engine doesn't
get used until the storage hook-up branch is merged in.

> So at least for the storage part, it sounds like the storage refactor code
> will be there, but it's still a question on whether it will be hooked in
> for 4.1 (I assume). By voting to merge this are we committing to having to
> potentially push back code freeze if the things you mention don't get fixed
> in time, or if this means that we have to wait for the storage hook-up
> branch?

We don't have to wait for the storage hook-up branch.  I believe it will come in soon but
that's dependent on javelin instead of javelin dependent on it.

A little bit about the storage hook-up branch as Edison is probably too busy testing it than
to talk about it on the list.  The new storage engine forces provisioning into plugins called
DataStoreProvider.   This allows developers to write plugins to provision volumes, snapshots,
and templates.  The plugins can determine where the physical provisioning can take place,
be it on the hypervisor or on a vm or somewhere else.  What the storage hook-up branch does
is wrap the existing CloudStack storage code in one big messy DataStoreProvider so that none
of the current functionality, such as Ceph, S3, Swift, etc are lost.  Then we can refactor
that big DataStoreprovider in 4.2.

> Are you saying there is stuff already in master that will be broken without
> Spring, or that other feature branches (besides the storage refactor) rely
> on it?

Nothing in master is broken without Spring.  Several other feature branches have been branched
off of javelin because they rather write their code/unit tests with Spring.

> > >
> > > Javelin has been checked with marvin integration testing to make sure
> the
> > > server behaves the same.  skipTests has been turned off and the unit
> > tests
> > > are running clean.  Non-oss is also converted over but there might be a
> > small
> > > issue with VmWare.  Usage and awsapi also have small issues but we
> > believe
> > > we can fix those within the 72 hour waiting period.
> Is the integration coverage good enough now that we trust it for a change
> this large? Not to be pessimistic, and perhaps this has nothing to do with
> the merge request itself, but two weeks ago when we were trying to add a
> test to the we found that it was only partially working to
> begin with. Ryan fixed that one up. So I'm wondering if the integration
> testing worked because the tests have been fixed up, or if you just mean
> that the results are the same (tests that failed before still fail,
> successes still succeed).

I'm assuming this is questioning the Spring work given that storage engine is not activated
yet.  It is true that Spring touches almost every single file in CloudStack.  In some respects,
on principle only, you figure an aop system shouldn't have such deep impacts to a system.
 The Spring system and the original system are very similar in principle so once things are
wired up, there's no change to the original business logic so the effect of the Spring system
once the system is up and running is fairly minor.  Expect some bugs which I think the two
month of testing after code freeze should turn up easily.

As for the tests, Rohit sent an email earlier showing why expunge failed.  So yes if it failed
in master, it still failed in javelin.  For the expunge case, we will probably fix the business
logic because it didn't make sense in the first place.  But, again, no business logic changes
due to Spring work.


View raw message