Availability of alpha Easy Juju on Azure disk image

2015-02-10 Thread Samuel Cozannet
Dear All,

Yesterday we released an alpha of a new Ubuntu image on MS Azure VM Depot:
https://vmdepot.msopentech.com/Vhd/Show?vhdId=50248

If you use that image and spin a VM with it, you'll be able to upload your
Azure .publishsettings file to its web interface. From that moment, the VM
will boostrap a Juju environment, install the Juju GUI.
The main web page auto refreshes, and presents the link to the Juju GUI
with a password when it's ready.

The whole process from upload to Juju GUI takes about 10min to complete,
and does not require any knowledge of Juju or Ubuntu to start playing.
It leaves you with a fully functional Juju environment using your default
subscription as your main Azure provider.

We hope you enjoy that new and easy way to start with Juju. We aim at
making this image available from the Marketplace when we gather enough
feedback and fix bugs that remain.

The whole code and explanations are available on
https://github.com/SaMnCo/juju-azure. Please use that repo to send feedback
while we make it better. You can also answer to this thread on the list to
ask any question or feature request you may have.

Best,
Samuel

--
Samuel Cozannet
Cloud, Big Data and IoT Strategy Team
Business Development - Cloud and ISV Ecosystem
Changing the Future of Cloud
Ubuntu http://ubuntu.com  / Canonical UK LTD http://canonical.com / Juju
https://jujucharms.com
samuel.cozan...@canonical.com
mob: +33 616 702 389
skype: samnco
Twitter: @SaMnCo_23
-- 
Juju mailing list
Juju@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju


Re: Availability of alpha Easy Juju on Azure disk image

2015-02-10 Thread Marco Ceppi
Hey Andrew,

I agree with you on the feedback, since it's an HTML page at the moment
it's hard to incorporate those items, but I've forked the repo and started
building a lightweight Python app to provide that feedback to the user.

Marco

On Tue Feb 10 2015 at 9:37:48 PM Andrew Wilkins 
andrew.wilk...@canonical.com wrote:

 Hi Samuel,

 Looks neat. A few things:
  1. Once the VM is ready, the entire landing page keeps refreshing at 1s
 intervals. That doesn't leave a lot of time to add the .publishsettings
 file and upload.
  2. There's no feedback to say whether or not the .publishsetttings file
 has been uploaded, and whether bootstrapping is underway. I guess I did it
 twice because of point 1, because now I have two juju bootstrap processes
 on the machine :)
  3. When the GUI eventually came up, it wouldn't accept the password that
 the page displayed. This is related to point 2: the page gave me the link
 to the GUI for one env, and the password for the other.

 It'd be great if the upload credentials bit greyed out once uploaded,
 and then under 3. Wait for a few minutes... there was something
 describing the current status. e.g. Installing Juju, Deploying Juju GUI.

 Cheers,
 Andrew

 On Tue, Feb 10, 2015 at 11:01 PM, Samuel Cozannet 
 samuel.cozan...@canonical.com wrote:

 Dear All,

 Yesterday we released an alpha of a new Ubuntu image on MS Azure VM
 Depot: https://vmdepot.msopentech.com/Vhd/Show?vhdId=50248

 If you use that image and spin a VM with it, you'll be able to upload
 your Azure .publishsettings file to its web interface. From that moment,
 the VM will boostrap a Juju environment, install the Juju GUI.
 The main web page auto refreshes, and presents the link to the Juju GUI
 with a password when it's ready.

 The whole process from upload to Juju GUI takes about 10min to complete,
 and does not require any knowledge of Juju or Ubuntu to start playing.
 It leaves you with a fully functional Juju environment using your default
 subscription as your main Azure provider.

 We hope you enjoy that new and easy way to start with Juju. We aim at
 making this image available from the Marketplace when we gather enough
 feedback and fix bugs that remain.

 The whole code and explanations are available on
 https://github.com/SaMnCo/juju-azure. Please use that repo to send
 feedback while we make it better. You can also answer to this thread on the
 list to ask any question or feature request you may have.

 Best,
 Samuel

 --
 Samuel Cozannet
 Cloud, Big Data and IoT Strategy Team
 Business Development - Cloud and ISV Ecosystem
 Changing the Future of Cloud
 Ubuntu http://ubuntu.com  / Canonical UK LTD http://canonical.com /
 Juju https://jujucharms.com
 samuel.cozan...@canonical.com
 mob: +33 616 702 389
 skype: samnco
 Twitter: @SaMnCo_23

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


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

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


Re: Availability of alpha Easy Juju on Azure disk image

2015-02-10 Thread Andrew Wilkins
Hi Samuel,

Looks neat. A few things:
 1. Once the VM is ready, the entire landing page keeps refreshing at 1s
intervals. That doesn't leave a lot of time to add the .publishsettings
file and upload.
 2. There's no feedback to say whether or not the .publishsetttings file
has been uploaded, and whether bootstrapping is underway. I guess I did it
twice because of point 1, because now I have two juju bootstrap processes
on the machine :)
 3. When the GUI eventually came up, it wouldn't accept the password that
the page displayed. This is related to point 2: the page gave me the link
to the GUI for one env, and the password for the other.

It'd be great if the upload credentials bit greyed out once uploaded, and
then under 3. Wait for a few minutes... there was something describing
the current status. e.g. Installing Juju, Deploying Juju GUI.

Cheers,
Andrew

On Tue, Feb 10, 2015 at 11:01 PM, Samuel Cozannet 
samuel.cozan...@canonical.com wrote:

 Dear All,

 Yesterday we released an alpha of a new Ubuntu image on MS Azure VM Depot:
 https://vmdepot.msopentech.com/Vhd/Show?vhdId=50248

 If you use that image and spin a VM with it, you'll be able to upload your
 Azure .publishsettings file to its web interface. From that moment, the VM
 will boostrap a Juju environment, install the Juju GUI.
 The main web page auto refreshes, and presents the link to the Juju GUI
 with a password when it's ready.

 The whole process from upload to Juju GUI takes about 10min to complete,
 and does not require any knowledge of Juju or Ubuntu to start playing.
 It leaves you with a fully functional Juju environment using your default
 subscription as your main Azure provider.

 We hope you enjoy that new and easy way to start with Juju. We aim at
 making this image available from the Marketplace when we gather enough
 feedback and fix bugs that remain.

 The whole code and explanations are available on
 https://github.com/SaMnCo/juju-azure. Please use that repo to send
 feedback while we make it better. You can also answer to this thread on the
 list to ask any question or feature request you may have.

 Best,
 Samuel

 --
 Samuel Cozannet
 Cloud, Big Data and IoT Strategy Team
 Business Development - Cloud and ISV Ecosystem
 Changing the Future of Cloud
 Ubuntu http://ubuntu.com  / Canonical UK LTD http://canonical.com /
 Juju https://jujucharms.com
 samuel.cozan...@canonical.com
 mob: +33 616 702 389
 skype: samnco
 Twitter: @SaMnCo_23

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


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


Unable to deploy a working 10 node hadoop cluster

2015-02-10 Thread Ken Williams
Hi,

I'm trying to deploy a basic hadoop cluster on Amazon (AWS).
It should have just 10 nodes to simply run hadoop map-reduce
jobs and just store data on hdfs. Nothing else. No hive or
spark or anything.

These are the commands I enter.

juju quickstart
juju deploy hdp-hadoop yarn-hdfs-master
juju deploy hdp-hadoop compute-node
juju add-unit -n 10 compute-node
juju add-relation yarn-hdfs-master:namenode compute-node:datanode
juju add-relation yarn-hdfs-master:resourcemanager
compute-node:nodemanager

In 'juju status' I can see all the nodes are being added and
I wait until all their statuses are 'running'.

If I 'juju ssh' to *any* of the compute-node machines I
cannot list any hdfs directories, and get this message

root@ip-172-31-28-205:~# su hdfs
hdfs@ip-172-31-28-205:/home/ubuntu$ hdfs dfs -ls /
ls: Incomplete HDFS URI, no host: hdfs://TODO-NAMENODE-HOSTNAME:PORT
hdfs@ip-172-31-28-205:/home/ubuntu$


Also, there is no 'DataNode' process running on the machine,
which would be needed to access HDFS.
Am I doing something wrong or am I meant to edit
the 'hdfs-site.xml' file myself ?
On all 10 machines ?

Also, if I 'juju ssh' onto the yarn-hdfs-master/0 machine
and try to run a hdfsadmin -report, it tells me that
hdfs has no data-nodes running (see below) - so when
I try to put data on to hdfs it fails with an error
message 'There are 0 datanode(s) running'.

hdfs@ip-172-31-21-161:/home/ubuntu$ hdfs dfsadmin -report
Configured Capacity: 0 (0 B)
Present Capacity: 0 (0 B)
DFS Remaining: 0 (0 B)
DFS Used: 0 (0 B)
DFS Used%: NaN%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-
Datanodes available: 0 (0 total, 0 dead)


I don't understand if I am doing something wrong.

What is the recommended way for deploying a
hadoop and hdfs cluster using juju ?

Thankyou for any help,

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


On not copy-pasting state and params struct conversions

2015-02-10 Thread Andrew Wilkins
Hi all,

Anastasia raised an issue in http://reviews.vapour.ws/r/885/ about how to
cut down on struct conversions between params, state, and domain packages.
In this case we're talking about storage. The following API server facades
currently participate in storage:
   - client
   - storage
   - provisioner
   - diskmanager (to be renamed, this lists block devices on machines)
   - diskformatter
   - storageworker (to be renamed, this is the dynamic storage provisioner)

Each facade have some overlap in dealing with storage entities, e.g. the
diskformatter and diskmanager each need to deal with block devices. This
leads to much duplication of struct copying/conversion code when toing and
froing between state and clients.

I don't want to go adding conversion code to the params, state or storage
packages, as they really shouldn't have dependencies on each other. Does
anyone have a good idea about where to put this common functionality? Maybe
api/common/storage, apiserver/common/storage? Does not appeal, but I
can't think of a better option.

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


Re: On not copy-pasting state and params struct conversions

2015-02-10 Thread William Reade
So, I think you *do* need conversion code specific to state -- the
methods exported from state should be in terms of the storage types,
because they're the language we've chosen to model storage, so there
needs to be conversion code in state (or possibly in an internal
package -- but either way there's no reason to expose it to anyone
else).

WRT params, though, we already have two groups of client packages, so
the same forces don't quite apply: and I still prefer that we *not*
import other packages into params [0]. How about a single
params/convert package?

Cheers
William

[0] this is because the temptation to use a storage.Foo in place of a
params.Foo has historically been overwhelming (and while it's *very
dangerous* to do that it's hard to make the danger sufficiently
obvious to dissuade distracted devs from doing so).

On Tue, Feb 10, 2015 at 11:07 AM, Andrew Wilkins
andrew.wilk...@canonical.com wrote:
 Hi all,

 Anastasia raised an issue in http://reviews.vapour.ws/r/885/ about how to
 cut down on struct conversions between params, state, and domain packages.
 In this case we're talking about storage. The following API server facades
 currently participate in storage:
- client
- storage
- provisioner
- diskmanager (to be renamed, this lists block devices on machines)
- diskformatter
- storageworker (to be renamed, this is the dynamic storage provisioner)

 Each facade have some overlap in dealing with storage entities, e.g. the
 diskformatter and diskmanager each need to deal with block devices. This
 leads to much duplication of struct copying/conversion code when toing and
 froing between state and clients.

 I don't want to go adding conversion code to the params, state or storage
 packages, as they really shouldn't have dependencies on each other. Does
 anyone have a good idea about where to put this common functionality? Maybe
 api/common/storage, apiserver/common/storage? Does not appeal, but I
 can't think of a better option.

 Cheers,
 Andrew

 --
 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


Re: A home for underappreciated errors

2015-02-10 Thread William Reade
On Tue, Feb 10, 2015 at 12:13 PM, William Reade
william.re...@canonical.com wrote:
 really ought to include a bunch more mechanism for finding out
 *precisely* what should have been assigned to what

To be clear: I do not think we should do this, because the
interpretation of those entities would themselves be domain-specific
-- if client code is written to expect a unit id and ends up suddenly
seeing a volume id, the *best* case is that it fails -- the worst is
that it keeps on running with bad data and smearing the effects of the
bug further through the system with arbitrary further fallout.

+100 to domain-specific errors.

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


Re: A home for underappreciated errors

2015-02-10 Thread Andrew Wilkins
On Tue, Feb 10, 2015 at 6:16 PM, roger peppe roger.pe...@canonical.com
wrote:

 On 10 February 2015 at 10:06, Andrew Wilkins
 andrew.wilk...@canonical.com wrote:
  On Tue, Feb 10, 2015 at 5:57 PM, roger peppe roger.pe...@canonical.com
  wrote:
 
  On 10 February 2015 at 08:55, Andrew Wilkins
  andrew.wilk...@canonical.com wrote:
   Hi all,
  
   Ian raised a good point in http://reviews.vapour.ws/r/885/ (caution
   advised,
   may cause eyebleed) about a change I made to errors:
   https://github.com/juju/errors/pull/17
  
   The NotAssigned error, which previously was only raised by
   state.Unit.AssignedMachineId, is now also raised by
   state.Volume.StorageInstance. I removed the error from the state
 package
   so
   we didn't have apiserver/common poking its head in there, and moved it
   over
   to the juju/errors package.
  
   The issue Ian raised is that juju/errors should contain relatively
   generic
   error types, and we should keep domain-specific things elsewhere.
   Examples
   are NotAssigned, and NotProvisioned. We're thinking of moving these
   domain-specific error types into a new package, juju/juju/errors. What
   do
   you think about this?
 
  I agree with Ian here. Personally, I think that specific error
  types/values work well when defined in or close to the module that
 returns
  them,
  which is aligned to my general feeling that the set of possible returned
  errors is part of the contract of the method it was returned from.
 
  For example, the mgo package returns mgo.ErrNotFound when
  an item isn't found, and that's fine - we translate from that
  error to a more local not-found error when necessary.
 
  For errors that pass over an API, they can be considered a part of the
 API
  and defined along with the other API types.
 
  So, rather than a single package for juju-related errors,
  I would suggest that domain-specific errors are defined
  in packages close to the domain in question rather than
  in a single package used by everything. To my mind this
  is a more modular and scalable approach.
 
 
  That all sounds good, but it doesn't work very well with the existing
  error code thingy in apiserver/common, unless we're okay with
  apiserver/common poking into state. I'm not a fan of that.
 
  Perhaps we just need a state-internal package which registers predicates
  in apiserver/common to do that magic. That wouldn't be so bad IMO.

 I don't understand. Can't you just define NotAssignedError in state
 and have the usual predicate operations in apiserver/common ?
 (you can't import apiserver/common from state BTW - you'd get a cycle)


Yeah, I didn't think that through well. Long day.
Having it state dependency from apiserver/common is, as William points out,
fine. It's all going to state anyway.
-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev


Re: On not copy-pasting state and params struct conversions

2015-02-10 Thread roger peppe
I think that the danger here is one of backwards incompatibility,
and that's a danger that's possible to alleviate with some tooling
support.

Writing tons of boilerplate code to manually convert between types at different
levels has always seemed like a poor use of developer resources to
me (and opens up more possibility for conversion errors).

When things *do* change in a backwardly incompatible way, then
of course conversion code would need to be written, but if
there is a tool that can automatically test that things remain compatible,
this could be only a small percentage of what is being done up
front now.

  cheers,
rog.


On 10 February 2015 at 09:07, Andrew Wilkins
andrew.wilk...@canonical.com wrote:
 Hi all,

 Anastasia raised an issue in http://reviews.vapour.ws/r/885/ about how to
 cut down on struct conversions between params, state, and domain packages.
 In this case we're talking about storage. The following API server facades
 currently participate in storage:
- client
- storage
- provisioner
- diskmanager (to be renamed, this lists block devices on machines)
- diskformatter
- storageworker (to be renamed, this is the dynamic storage provisioner)

 Each facade have some overlap in dealing with storage entities, e.g. the
 diskformatter and diskmanager each need to deal with block devices. This
 leads to much duplication of struct copying/conversion code when toing and
 froing between state and clients.

 I don't want to go adding conversion code to the params, state or storage
 packages, as they really shouldn't have dependencies on each other. Does
 anyone have a good idea about where to put this common functionality? Maybe
 api/common/storage, apiserver/common/storage? Does not appeal, but I
 can't think of a better option.

 Cheers,
 Andrew

 --
 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


Re: A home for underappreciated errors

2015-02-10 Thread Andrew Wilkins
On Tue, Feb 10, 2015 at 5:57 PM, roger peppe roger.pe...@canonical.com
wrote:

 On 10 February 2015 at 08:55, Andrew Wilkins
 andrew.wilk...@canonical.com wrote:
  Hi all,
 
  Ian raised a good point in http://reviews.vapour.ws/r/885/ (caution
 advised,
  may cause eyebleed) about a change I made to errors:
  https://github.com/juju/errors/pull/17
 
  The NotAssigned error, which previously was only raised by
  state.Unit.AssignedMachineId, is now also raised by
  state.Volume.StorageInstance. I removed the error from the state package
 so
  we didn't have apiserver/common poking its head in there, and moved it
 over
  to the juju/errors package.
 
  The issue Ian raised is that juju/errors should contain relatively
 generic
  error types, and we should keep domain-specific things elsewhere.
 Examples
  are NotAssigned, and NotProvisioned. We're thinking of moving these
  domain-specific error types into a new package, juju/juju/errors. What do
  you think about this?

 I agree with Ian here. Personally, I think that specific error
 types/values work well when defined in or close to the module that returns
 them,
 which is aligned to my general feeling that the set of possible returned
 errors is part of the contract of the method it was returned from.

 For example, the mgo package returns mgo.ErrNotFound when
 an item isn't found, and that's fine - we translate from that
 error to a more local not-found error when necessary.

 For errors that pass over an API, they can be considered a part of the API
 and defined along with the other API types.

 So, rather than a single package for juju-related errors,
 I would suggest that domain-specific errors are defined
 in packages close to the domain in question rather than
 in a single package used by everything. To my mind this
 is a more modular and scalable approach.


That all sounds good, but it doesn't work very well with the existing
error code thingy in apiserver/common, unless we're okay with
apiserver/common poking into state. I'm not a fan of that.

Perhaps we just need a state-internal package which registers predicates
in apiserver/common to do that magic. That wouldn't be so bad IMO.

It's also the standard Go idiom.

   cheers,
 rog.

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


Re: On not copy-pasting state and params struct conversions

2015-02-10 Thread Andrew Wilkins
On Tue, Feb 10, 2015 at 5:44 PM, William Reade william.re...@canonical.com
wrote:

 So, I think you *do* need conversion code specific to state -- the
 methods exported from state should be in terms of the storage types,
 because they're the language we've chosen to model storage, so there
 needs to be conversion code in state (or possibly in an internal
 package -- but either way there's no reason to expose it to anyone
 else).


Not sure I follow what you're saying about in terms of the storage types,
so
I'll describe how it is at the moment.

The types are in three places:
  - juju/juju/storage
  - juju/juju/apiserver/params
  - juju/juju/state

There's a storage.Volume, a params.Volume, and a state.Volume. state.Volume
is actually an interface, but there's a VolumeInfo which ~correlates to the
other
struct types.

I think the conversion from params-state all needs to be in
apiserver/something.

WRT params, though, we already have two groups of client packages, so
 the same forces don't quite apply: and I still prefer that we *not*
 import other packages into params [0]. How about a single
 params/convert package?


I could live with it, but I don't like the idea of adding dependencies to
every domain
for every facade that uses it.

Cheers,
Andrew

Cheers
 William

 [0] this is because the temptation to use a storage.Foo in place of a
 params.Foo has historically been overwhelming (and while it's *very
 dangerous* to do that it's hard to make the danger sufficiently
 obvious to dissuade distracted devs from doing so).

 On Tue, Feb 10, 2015 at 11:07 AM, Andrew Wilkins
 andrew.wilk...@canonical.com wrote:
  Hi all,
 
  Anastasia raised an issue in http://reviews.vapour.ws/r/885/ about how
 to
  cut down on struct conversions between params, state, and domain
 packages.
  In this case we're talking about storage. The following API server
 facades
  currently participate in storage:
 - client
 - storage
 - provisioner
 - diskmanager (to be renamed, this lists block devices on machines)
 - diskformatter
 - storageworker (to be renamed, this is the dynamic storage
 provisioner)
 
  Each facade have some overlap in dealing with storage entities, e.g. the
  diskformatter and diskmanager each need to deal with block devices. This
  leads to much duplication of struct copying/conversion code when toing
 and
  froing between state and clients.
 
  I don't want to go adding conversion code to the params, state or storage
  packages, as they really shouldn't have dependencies on each other. Does
  anyone have a good idea about where to put this common functionality?
 Maybe
  api/common/storage, apiserver/common/storage? Does not appeal, but I
  can't think of a better option.
 
  Cheers,
  Andrew
 
  --
  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


Re: A home for underappreciated errors

2015-02-10 Thread roger peppe
On 10 February 2015 at 08:55, Andrew Wilkins
andrew.wilk...@canonical.com wrote:
 Hi all,

 Ian raised a good point in http://reviews.vapour.ws/r/885/ (caution advised,
 may cause eyebleed) about a change I made to errors:
 https://github.com/juju/errors/pull/17

 The NotAssigned error, which previously was only raised by
 state.Unit.AssignedMachineId, is now also raised by
 state.Volume.StorageInstance. I removed the error from the state package so
 we didn't have apiserver/common poking its head in there, and moved it over
 to the juju/errors package.

 The issue Ian raised is that juju/errors should contain relatively generic
 error types, and we should keep domain-specific things elsewhere. Examples
 are NotAssigned, and NotProvisioned. We're thinking of moving these
 domain-specific error types into a new package, juju/juju/errors. What do
 you think about this?

I agree with Ian here. Personally, I think that specific error
types/values work well when defined in or close to the module that returns them,
which is aligned to my general feeling that the set of possible returned
errors is part of the contract of the method it was returned from.

For example, the mgo package returns mgo.ErrNotFound when
an item isn't found, and that's fine - we translate from that
error to a more local not-found error when necessary.

For errors that pass over an API, they can be considered a part of the API
and defined along with the other API types.

So, rather than a single package for juju-related errors,
I would suggest that domain-specific errors are defined
in packages close to the domain in question rather than
in a single package used by everything. To my mind this
is a more modular and scalable approach.

It's also the standard Go idiom.

  cheers,
rog.

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


Re: A home for underappreciated errors

2015-02-10 Thread William Reade
I think that NotAssigned is *too* generic. UnitNotAssignedToMachineErr
is one thing, and VolumeNotAssignedToStorageInstance is another; if we
use the same error type to represent those distinct situations, we
really ought to include a bunch more mechanism for finding out
*precisely* what should have been assigned to what (because
refactoring happens, and methods start returning the same generic
error for new reasons, potentially breaking client code that makes
assumptions about what that generic error type implies. See
worker/uniter/filter/filter.go and search for ErrTerminateAgent for a
particularly hair-raising example...)

I see what you're saying re apiserver/common, but I wouldn't really
characterise it as poking into state: apiserver is generally
implemented in terms of state, so that's a perfectly reasonable
dependency IMO. For exactly the reasons stated re generic error types
in code, the generic error codes in the api are the scary bits I now
wish we'd done differently...

Cheers
William

On Tue, Feb 10, 2015 at 10:55 AM, Andrew Wilkins
andrew.wilk...@canonical.com wrote:
 Hi all,

 Ian raised a good point in http://reviews.vapour.ws/r/885/ (caution advised,
 may cause eyebleed) about a change I made to errors:
 https://github.com/juju/errors/pull/17

 The NotAssigned error, which previously was only raised by
 state.Unit.AssignedMachineId, is now also raised by
 state.Volume.StorageInstance. I removed the error from the state package so
 we didn't have apiserver/common poking its head in there, and moved it over
 to the juju/errors package.

 The issue Ian raised is that juju/errors should contain relatively generic
 error types, and we should keep domain-specific things elsewhere. Examples
 are NotAssigned, and NotProvisioned. We're thinking of moving these
 domain-specific error types into a new package, juju/juju/errors. What do
 you think about this?

 Cheers,
 Andrew

 --
 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


Re: A home for underappreciated errors

2015-02-10 Thread Dimiter Naydenov
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 10.02.2015 11:57, roger peppe wrote:
 On 10 February 2015 at 08:55, Andrew Wilkins 
 andrew.wilk...@canonical.com wrote:
 Hi all,
 
 Ian raised a good point in http://reviews.vapour.ws/r/885/
 (caution advised, may cause eyebleed) about a change I made to
 errors: https://github.com/juju/errors/pull/17
 
 The NotAssigned error, which previously was only raised by 
 state.Unit.AssignedMachineId, is now also raised by 
 state.Volume.StorageInstance. I removed the error from the state
 package so we didn't have apiserver/common poking its head in
 there, and moved it over to the juju/errors package.
 
 The issue Ian raised is that juju/errors should contain
 relatively generic error types, and we should keep
 domain-specific things elsewhere. Examples are NotAssigned, and
 NotProvisioned. We're thinking of moving these domain-specific
 error types into a new package, juju/juju/errors. What do you
 think about this?
NotAssigned is more generic than NotProvisioned IMO, so if I were to
decide which one to move to juju/errors, I'd move the former, not the
latter.

 
 I agree with Ian here. Personally, I think that specific error 
 types/values work well when defined in or close to the module that
 returns them, which is aligned to my general feeling that the set
 of possible returned errors is part of the contract of the method
 it was returned from.
 
 For example, the mgo package returns mgo.ErrNotFound when an item
 isn't found, and that's fine - we translate from that error to a
 more local not-found error when necessary.
 
 For errors that pass over an API, they can be considered a part of
 the API and defined along with the other API types.
 
 So, rather than a single package for juju-related errors, I would
 suggest that domain-specific errors are defined in packages close
 to the domain in question rather than in a single package used by
 everything. To my mind this is a more modular and scalable
 approach.
 
+1 I like the idea of having state/errors for
sharable-but-domain-specific errors (or network/errors,
storage/errors, etc.) and leave generic errors useful it a lot more
cases in juju/errors.

 It's also the standard Go idiom.
 
 cheers, rog.
 


- -- 
Dimiter Naydenov dimiter.nayde...@canonical.com
Juju Core Sapphire team http://juju.ubuntu.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1

iQEcBAEBAgAGBQJU2d83AAoJENzxV2TbLzHwd20H/i22GBC5dADZnLFAfNhE+X0y
E7tZc+UkrsKGUmcAHm1k5tEuv3r9Vk6vLxtEcRVXcWvXqoCCW72Cpsw7lLiAkKoH
dYPwyBTVorp/N+Z1hxMN+P3LhctRlGNlz1IR9BLJ+3fM/Dlfp+YfVJ93BfqrcC7f
uaUJY0iSdOHuedfs29CtTtamSDNb1s3l8uCo5X0Ihh2zc1SMOHPVFxrdWnLTERpN
Vw8C6gv47GETUekTzwoviioiQrDxKijMqjkGB9khrKiXdlSLz0rQV2W+874ztPgo
pkcdlSzLCJ89r7WB79kajGYWGrlXD1n6NsTSgywIW+M8teIprHjR/exWDxtyPKs=
=dbEQ
-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


[Review Queue] Dell-OMSA, Seafile, Nagios, Quassel-Core

2015-02-10 Thread Charles Butler
I reviewed the Dell OpenManageServerAdministrator charm which is a
brilliant use of a localized juju charm for deploying some added zing to
dell servers.
https://bugs.launchpad.net/charms/+bug/1325700

This landed today and was +1'd thanks to mwennings hard work.

MariaDB had an ISV Maintainer contribution by dbart - who's hard work has
been ack'd as the upstream charm
https://bugs.launchpad.net/charms/+bug/1028093

There were 2 seafile merges proposed that were accepted today. 1 was for
some bug fixups
https://code.launchpad.net/~jose/charms/precise/seafile/fixes/+merge/244636

Another was for test inclusion
https://code.launchpad.net/~marcoceppi/charms/precise/seafile/tests/+merge/240964

This work was landed due in part to our prior abandoned charms work - and
has a bug associated with it:
https://bugs.launchpad.net/charms/+source/seafile/+bug/1420374


Nagios template config update:
https://code.launchpad.net/~larry-e-works/charms/trusty/nagios/nagios-added-template-config/+merge/242444

This merge was marked as needs work due to missing test coverage and
documentation. Minor fixups to bring the submission up to charm store
guidelines.





-- 
All the best,

Charles Butler charles.but...@canonical.com - Juju Charmer
Come see the future of datacenter orchestration: http://jujucharms.com
-- 
Juju mailing list
Juju@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju


juju-core 1.21.2 is proposed for release

2015-02-10 Thread Curtis Hovey-Canonical
# juju-core 1.21.2

A new stable release of Juju, juju-core 1.21.2, is proposed.
This release may replace 1.21.1 on 2015-02-12 after a period
of evaluation.


## Getting Juju

juju-core 1.21.2 is available for utopic and backported to earlier
series in the following PPA:

https://launchpad.net/~juju/+archive/proposed

The proposed packages in this archive use the proposed simple-streams.
You must configure the 'agent-stream' option in your
environments.yaml to use the matching juju agents.

agent-stream: proposed


## Notable Changes

This releases addresses stability and performance issues.


## Resolved issues

* Unable to override network-bridge if container type is kvm (local
  provider)
  Lp 1416134

* Src/bitbucket.org/kardianos/osext/license is wrong
  Lp 1416425

* Github.com/juju/syslog has contradicting licensing info
  Lp 1416433

* Some files refer to an include license file that is not included
  Lp 1416430

* Github.com/juju/utils has contradictory licence info
  Lp 1416436

* Juju restore no longer works with azure: error: cannot re-bootstrap
  environment: cannot determine state server instances: environment is
  not bootstrapped
  Lp 1417178

* Unit ports not populated by api megawatcher
  Lp 1418433

* Apt-proxy can be incorrectly set when the fallback from http-proxy
  is used
  Lp 1417617


Finally

We encourage everyone to subscribe the mailing list at
juju-...@lists.canonical.com, or join us on #juju-dev on freenode.

-- 
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: Unable to deploy a working 10 node hadoop cluster

2015-02-10 Thread Cory Johns
Ken,

Unfortunately, this is due to an upstream change in the openjdk
package.  A bug has been filed[1] and it has been noted that this
breaks all of the Big Data charms in the store.  Please indicate on
that bug that this is affecting you.

There is a symlink work-around mentioned on the bug, but it is
per-process.  You could also manually install the previous Java
version using apt[2], but this is not recommended and would require
removing and re-adding all of the relations, at least.

[1] https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/1417962
[2] sudo apt-get install openjdk-7-jdk=7u51-2.4.6-1ubuntu4
openjdk-7-jre=7u51-2.4.6-1ubuntu4
openjdk-7-jre-headless=7u51-2.4.6-1ubuntu4

On Tue, Feb 10, 2015 at 11:59 AM, Ken Williams ke...@theasi.co wrote:

 Hi,

 I'm trying to deploy a basic hadoop cluster on Amazon (AWS).
 It should have just 10 nodes to simply run hadoop map-reduce
 jobs and just store data on hdfs. Nothing else. No hive or
 spark or anything.

 These are the commands I enter.

 juju quickstart
 juju deploy hdp-hadoop yarn-hdfs-master
 juju deploy hdp-hadoop compute-node
 juju add-unit -n 10 compute-node
 juju add-relation yarn-hdfs-master:namenode compute-node:datanode
 juju add-relation yarn-hdfs-master:resourcemanager
 compute-node:nodemanager

 In 'juju status' I can see all the nodes are being added and
 I wait until all their statuses are 'running'.

 If I 'juju ssh' to *any* of the compute-node machines I
 cannot list any hdfs directories, and get this message

 root@ip-172-31-28-205:~# su hdfs
 hdfs@ip-172-31-28-205:/home/ubuntu$ hdfs dfs -ls /
 ls: Incomplete HDFS URI, no host: hdfs://TODO-NAMENODE-HOSTNAME:PORT
 hdfs@ip-172-31-28-205:/home/ubuntu$


 Also, there is no 'DataNode' process running on the machine,
 which would be needed to access HDFS.
 Am I doing something wrong or am I meant to edit
 the 'hdfs-site.xml' file myself ?
 On all 10 machines ?

 Also, if I 'juju ssh' onto the yarn-hdfs-master/0 machine
 and try to run a hdfsadmin -report, it tells me that
 hdfs has no data-nodes running (see below) - so when
 I try to put data on to hdfs it fails with an error
 message 'There are 0 datanode(s) running'.

 hdfs@ip-172-31-21-161:/home/ubuntu$ hdfs dfsadmin -report
 Configured Capacity: 0 (0 B)
 Present Capacity: 0 (0 B)
 DFS Remaining: 0 (0 B)
 DFS Used: 0 (0 B)
 DFS Used%: NaN%
 Under replicated blocks: 0
 Blocks with corrupt replicas: 0
 Missing blocks: 0

 -
 Datanodes available: 0 (0 total, 0 dead)


 I don't understand if I am doing something wrong.

 What is the recommended way for deploying a
 hadoop and hdfs cluster using juju ?

 Thankyou for any help,

 Ken



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


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


What are blocks ?

2015-02-10 Thread David Cheney
Hello,

Can someone direct me to the design documents for the enigmatic
'block' functionality which is showing up in the review queue.

Thanks

Dave

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


[Review Queue]: Openbook

2015-02-10 Thread Matt Bruzek
For my time in the review queue I did another round on the Talligent
Openbook charm.  The previous problem was fixed, but it had another
configuration related problem.

https://bugs.launchpad.net/charms/+bug/1411402

   - Matt Bruzek matthew.bru...@canonical.com
-- 
Juju mailing list
Juju@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju


Juju devel 1.22-beta3 is available for testing.

2015-02-10 Thread Curtis Hovey-Canonical
# juju-core 1.22-beta3

A new development release of Juju, juju-core 1.22-beta3, is now available.
This release replaces 1.22-beta2.

## Getting Juju

juju-core 1.22-beta3 is available for utopic and backported to earlier
series in the following PPA:

https://launchpad.net/~juju/+archive/devel

The devel packages in this archive use the devel simple-streams.
You must configure the 'agent-stream' option in your
environments.yaml to use the matching juju agents.

agent-stream: devel

Upgrading from stable releases to development releases is not
supported. You can upgrade test environments to development releases
to test new features and fixes, but it is not advised to upgrade
production environments to 1.22-beta3.

## Notable Changes

This releases addresses stability and performance issues.

## Resolved issues

* Failure to retrieve the template to clone: lxc container with 1.22
  beta2
  Lp 1417594

* Charm download behind the enterprise proxy fails
  Lp 1403225

* Unit ports not populated by api megawatcher
  Lp 1418433

* Apt-proxy can be incorrectly set when the fallback from http-proxy
  is used
  Lp 1417617

Finally

We encourage everyone to subscribe the mailing list at
juju-...@lists.canonical.com, or join us on #juju-dev on freenode.


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

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