You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jclouds.apache.org by Sunil Shah <su...@mesosphere.io> on 2014/08/07 23:53:30 UTC

IllegalArgumentException when creating nodes in GCE projects

Hey all,

We've been running into a bug that has us a little stumped. When we have an
existing (manually created) instance in our GCE project which begins with a
two letter name and then a hyphen (e.g. "ss-production"). This doesn't
appear to happen when we have instances with just two letter names (e.g.
"ss").

When calling:
val node = computeService.createNodesInGroup(name, 1, template)

we get an exception:

java.lang.IllegalArgumentException: Object 'ss' doesn't match dns
naming constraints. Reason: Can't be null or empty. Length must be 3
to 63 symbols..

The full stack trace is here, we're using JClouds 1.7.3:
https://gist.github.com/ssk2/853ba032135c60621a9a

I can't figure out where the offending logic is that would cause this
problem in JClouds - any pointers would be useful, as well as any
workarounds that don't involve renaming existing instances.

Cheers,

Sunil

Re: IllegalArgumentException when creating nodes in GCE projects

Posted by Chris Custine <ch...@gmail.com>.
Sorry about that, I created a local mock last night to check that but
didn't have time to whip up a live test against gce. So your other option
of course is to name any of your manually created instances that have
dashes in the name with a minimum of 3 characters before the dash. That is
a sucky workaround but it will get you past this for now.

Also, if you could create a jira for this we can track the issue and see if
we can remedy this. I won't have much time to dig deeper until later next
week but maybe someone else will be able to look.

Thanks,
Chris

--
Sent from my Android phone
On Aug 8, 2014 9:09 AM, "Sunil Shah" <su...@mesosphere.io> wrote:

> Hey Chris,
>
> Thanks for the suggestion! Unfortunately that didn't work - Google's
> instance naming convention requires a-z, 0-9 and only hyphens as
> delimiters. This is the error message we got back from their API via
> JClouds - https://gist.github.com/ssk2/4105344aa40aedc246e5
>
> I suspect this could be considered a bug - since those are valid instance
> names (at least according to Google's own naming guidelines). Would be glad
> to hear what other suggestions you have :)
>
> Cheers,
>
> Sunil
>
>
> On Fri, Aug 8, 2014 at 8:05 AM, Chris Custine <ch...@gmail.com>
> wrote:
>
>> Hi Sunil,
>> Basically your naming scheme is conflicting with the way jclouds encodes
>> group names in the instance name by default. jclouds is looking at existing
>> instances to see if they are a member of the group and since your naming
>> matches the jclouds default scheme, it is also applying a bit of validation
>> when it parses the name. I think your quickest workaround is to change the
>> jclouds group delimiter like this:
>>
>> props.put(ComputeServiceProperties.RESOURCENAME_DELIMITER, "_”);
>>
>> This way jclouds won’t match on the two letter + “-“.  I’m trying to
>> figure out if we should consider this a bug or if it is just a nuance that
>> has to be documented somewhere.  There are other less savory options as
>> well, so let me know if this doesn’t work out for you for whatever reason.
>>
>> Thanks,
>> Chris
>>
>> --
>> Chris Custine
>>
>>
>> On August 7, 2014 at 3:53:56 PM, Sunil Shah (sunil@mesosphere.io) wrote:
>> > Hey all,
>> >
>> > We've been running into a bug that has us a little stumped. When we
>> have an
>> > existing (manually created) instance in our GCE project which begins
>> with a
>> > two letter name and then a hyphen (e.g. "ss-production"). This doesn't
>> > appear to happen when we have instances with just two letter names (e.g.
>> > "ss").
>> >
>> > When calling:
>> > val node = computeService.createNodesInGroup(name, 1, template)
>> >
>> > we get an exception:
>> >
>> > java.lang.IllegalArgumentException: Object 'ss' doesn't match dns
>> > naming constraints. Reason: Can't be null or empty. Length must be 3
>> > to 63 symbols..
>> >
>> > The full stack trace is here, we're using JClouds 1.7.3:
>> > https://gist.github.com/ssk2/853ba032135c60621a9a
>> >
>> > I can't figure out where the offending logic is that would cause this
>> > problem in JClouds - any pointers would be useful, as well as any
>> > workarounds that don't involve renaming existing instances.
>> >
>> > Cheers,
>> >
>> > Sunil
>> >
>>
>>
>

Re: IllegalArgumentException when creating nodes in GCE projects

Posted by Sunil Shah <su...@mesosphere.io>.
Hey Chris,

Thanks for the suggestion! Unfortunately that didn't work - Google's
instance naming convention requires a-z, 0-9 and only hyphens as
delimiters. This is the error message we got back from their API via
JClouds - https://gist.github.com/ssk2/4105344aa40aedc246e5

I suspect this could be considered a bug - since those are valid instance
names (at least according to Google's own naming guidelines). Would be glad
to hear what other suggestions you have :)

Cheers,

Sunil


On Fri, Aug 8, 2014 at 8:05 AM, Chris Custine <ch...@gmail.com>
wrote:

> Hi Sunil,
> Basically your naming scheme is conflicting with the way jclouds encodes
> group names in the instance name by default. jclouds is looking at existing
> instances to see if they are a member of the group and since your naming
> matches the jclouds default scheme, it is also applying a bit of validation
> when it parses the name. I think your quickest workaround is to change the
> jclouds group delimiter like this:
>
> props.put(ComputeServiceProperties.RESOURCENAME_DELIMITER, "_”);
>
> This way jclouds won’t match on the two letter + “-“.  I’m trying to
> figure out if we should consider this a bug or if it is just a nuance that
> has to be documented somewhere.  There are other less savory options as
> well, so let me know if this doesn’t work out for you for whatever reason.
>
> Thanks,
> Chris
>
> --
> Chris Custine
>
>
> On August 7, 2014 at 3:53:56 PM, Sunil Shah (sunil@mesosphere.io) wrote:
> > Hey all,
> >
> > We've been running into a bug that has us a little stumped. When we have
> an
> > existing (manually created) instance in our GCE project which begins
> with a
> > two letter name and then a hyphen (e.g. "ss-production"). This doesn't
> > appear to happen when we have instances with just two letter names (e.g.
> > "ss").
> >
> > When calling:
> > val node = computeService.createNodesInGroup(name, 1, template)
> >
> > we get an exception:
> >
> > java.lang.IllegalArgumentException: Object 'ss' doesn't match dns
> > naming constraints. Reason: Can't be null or empty. Length must be 3
> > to 63 symbols..
> >
> > The full stack trace is here, we're using JClouds 1.7.3:
> > https://gist.github.com/ssk2/853ba032135c60621a9a
> >
> > I can't figure out where the offending logic is that would cause this
> > problem in JClouds - any pointers would be useful, as well as any
> > workarounds that don't involve renaming existing instances.
> >
> > Cheers,
> >
> > Sunil
> >
>
>

Re: IllegalArgumentException when creating nodes in GCE projects

Posted by Chris Custine <ch...@gmail.com>.
Hi Sunil,
Basically your naming scheme is conflicting with the way jclouds encodes group names in the instance name by default. jclouds is looking at existing instances to see if they are a member of the group and since your naming matches the jclouds default scheme, it is also applying a bit of validation when it parses the name. I think your quickest workaround is to change the jclouds group delimiter like this:

props.put(ComputeServiceProperties.RESOURCENAME_DELIMITER, "_”);

This way jclouds won’t match on the two letter + “-“.  I’m trying to figure out if we should consider this a bug or if it is just a nuance that has to be documented somewhere.  There are other less savory options as well, so let me know if this doesn’t work out for you for whatever reason.

Thanks,
Chris

--  
Chris Custine


On August 7, 2014 at 3:53:56 PM, Sunil Shah (sunil@mesosphere.io) wrote:
> Hey all,
>  
> We've been running into a bug that has us a little stumped. When we have an
> existing (manually created) instance in our GCE project which begins with a
> two letter name and then a hyphen (e.g. "ss-production"). This doesn't
> appear to happen when we have instances with just two letter names (e.g.
> "ss").
>  
> When calling:
> val node = computeService.createNodesInGroup(name, 1, template)
>  
> we get an exception:
>  
> java.lang.IllegalArgumentException: Object 'ss' doesn't match dns
> naming constraints. Reason: Can't be null or empty. Length must be 3
> to 63 symbols..
>  
> The full stack trace is here, we're using JClouds 1.7.3:
> https://gist.github.com/ssk2/853ba032135c60621a9a
>  
> I can't figure out where the offending logic is that would cause this
> problem in JClouds - any pointers would be useful, as well as any
> workarounds that don't involve renaming existing instances.
>  
> Cheers,
>  
> Sunil
>