Re: API compatibility policy and practices between juju versions

2013-11-20 Thread Curtis Hovey-Canonical
On Tue, Nov 19, 2013 at 8:43 PM, Tim Penhey tim.pen...@canonical.com wrote:
 It was my understanding that the api server needs to be at least as
 advanced as any client.

 This means that a 1.18 server should be able to support a 1.16.x client.

 However we don't support 1.18 clients on a 1.16.x server.

 Does this change your thinking?

Newer clients with older servers is going to happen. How will devops
upgrade their production deployments?

A. Nominate one deployment machine to go to 1.18. From another machine
use juju 1.16 to call upgrade-juju. Run juju status on both machines
to watch agent switch to the next version, or if they fail, intervene
with the appropriate client? Scripting this is awkward (the kindest
thing I can say).

B. We package co-installable juju clients. The deployment machine
installs juju1.16 and juju1.18. Devops and scripts take care to
specify the client version? Devops remove the unused clients when they
remember. I am not sure how this would work with Windows. I am certain
it wont work with OS X because homebrew only builds the most recent
stable release.

Our current promise is that you can always upgrade to the next
version. I think we need to ensure this case works from 16 and 18
clients.

-- 
Curtis Hovey
Canonical Cloud Development and Operations
http://launchpad.net/~sinzui

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev


Re: API compatibility policy and practices between juju versions

2013-11-20 Thread John Arbash Meinel
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2013-11-20 20:15, Curtis Hovey-Canonical wrote:
 On Tue, Nov 19, 2013 at 8:43 PM, Tim Penhey
 tim.pen...@canonical.com wrote:
 It was my understanding that the api server needs to be at least
 as advanced as any client.
 
 This means that a 1.18 server should be able to support a 1.16.x
 client.
 
 However we don't support 1.18 clients on a 1.16.x server.
 
 Does this change your thinking?
 
 Newer clients with older servers is going to happen. How will
 devops upgrade their production deployments?
 
 A. Nominate one deployment machine to go to 1.18. From another
 machine use juju 1.16 to call upgrade-juju. Run juju status on both
 machines to watch agent switch to the next version, or if they
 fail, intervene with the appropriate client? Scripting this is
 awkward (the kindest thing I can say).
 
 B. We package co-installable juju clients. The deployment machine 
 installs juju1.16 and juju1.18. Devops and scripts take care to 
 specify the client version? Devops remove the unused clients when
 they remember. I am not sure how this would work with Windows. I am
 certain it wont work with OS X because homebrew only builds the
 most recent stable release.
 
 Our current promise is that you can always upgrade to the next 
 version. I think we need to ensure this case works from 16 and 18 
 clients.
 

Yes. I think that is one of the primary caveats for the we don't
guarantee all cross version compatibility is that we *do* guarantee
upgrade works. (It is the one blocker for making a .ODD release into a
.EVEN, which has delayed 1.14 and 1.16, IIRC)

John
=:-

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.13 (Cygwin)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlKM4h8ACgkQJdeBCYSNAAN7lACguV6SMOTXennV++0Q27HLNGJN
JisAnj+Kmh52B0v7IBWtYqsiCbLklTlY
=BuMc
-END PGP SIGNATURE-

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev


API compatibility policy and practices between juju versions

2013-11-20 Thread Aaron Bentley
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

John Arbash Meinel wrote:
 I think that is one of the primary caveats for the we don't 
 guarantee all cross version compatibility is that we *do*
 guarantee upgrade works.

I think we should also support status, so that
1. You can determine when an upgrade has gone wrong
2. When an upgrade goes wrong, you know the IP address of the affected
machine, so that you can SSH into it.

Aaron
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.14 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlKND8YACgkQ0F+nu1YWqI01OgCfVr0Z4IDlccjuZ6uhJwxPJDCj
LFYAn2fRRF+JffQFgROJMVDuD/XRhCdI
=BoYX
-END PGP SIGNATURE-

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev


Re: API compatibility policy and practices between juju versions

2013-11-20 Thread John Meinel
I think that is a fair point. Especially right now when we haven't quite
nailed getting provider secrets on first connect.

John
=:-
On Nov 20, 2013 11:39 PM, Aaron Bentley aaron.bent...@canonical.com
wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 John Arbash Meinel wrote:
  I think that is one of the primary caveats for the we don't
  guarantee all cross version compatibility is that we *do*
  guarantee upgrade works.

 I think we should also support status, so that
 1. You can determine when an upgrade has gone wrong
 2. When an upgrade goes wrong, you know the IP address of the affected
 machine, so that you can SSH into it.

 Aaron
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.14 (GNU/Linux)
 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

 iEYEARECAAYFAlKND8YACgkQ0F+nu1YWqI01OgCfVr0Z4IDlccjuZ6uhJwxPJDCj
 LFYAn2fRRF+JffQFgROJMVDuD/XRhCdI
 =BoYX
 -END PGP SIGNATURE-

 --
 Juju-dev mailing list
 Juju-dev@lists.ubuntu.com
 Modify settings or unsubscribe at:
 https://lists.ubuntu.com/mailman/listinfo/juju-dev

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev


API compatibility policy and practices between juju versions

2013-11-19 Thread Curtis Hovey-Canonical
I am not sure if I am leading a discussion or just stating that we
have a problem that I don't believe can be ever solved.

We abandoned the release of 1.16.4 because we found it was
incompatible with 1.16.3
https://bugs.launchpad.net/juju-core/+bug/1252469
API incompatability: ERROR no such request DestroyMachines on Client

I now believe this bug is in the same class of problem:
https://bugs.launchpad.net/juju-core/+bug/1250154
ERROR no such request EnvironmentGet on Client

I suspect both bugs also mean that 1.18.x will be incompatible with 1.16.x

1. I think Juju selects the latest version at the patch-level because
they are always cli/api compatible between clients and servers. We
*require* 100% api/cli compatibility. This is the first bug.

2. I believe enterprises like our own IS will stagger minor upgrades.
Over a period of weeks, 1.18.0 will be used with 1.16.3 and they
require api/cli compatibility. This is bug two.

Enforcing point 1 is tremendously hard. We would have an ever growing
matrix of tests for the juju client-server combinations + a test for
every patch landed to verify that the user can accomplish the task. We
don't have the staff to do this. We are taking risks with each patch
release.

We are not enforcing point 2 at all. CI has found some bugs because it
nominally acts like devops when it runs upgrade tests. Even when the
upgrade fails, we attempt to scp the logs from the failing machine
just like a devop would.

Speaking for CI, we would never want a feature removed in a single
release. The feature needs to be deprecated so that we. like all IS
departments, have time adjust scripts as we transition from one
version to the next.

I think deprecated-for-one-release is hard. in the case of API every
where, I think that means that we add api, but fallback to cli so that
things like scp and terminate-machine always work across versions. The
old way of doing something is removed after one minor release.

I personally think a non-matching tools on bootstrap/depoy is crack.
At least warn that the client and server do not match. I think we can
promise status and upgrade-juju works between versions, allowing the
devops to do the upgrade. The aborted 1.16.4 can do that, so I helped
others build their own package and setup the private cloud to use just
the version so that they could switch everything to the version that
works best for them.



-- 
Curtis Hovey
Canonical Cloud Development and Operations
http://launchpad.net/~sinzui

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev