WRT the GCE fail, that is a simple case of using the default naming
convention validator. The fix would be to make a class like we use in
azure and configure GCE to use it.

https://github.com/jclouds/jclouds/blob/master/providers/azureblob/src/main/java/org/jclouds/azureblob/predicates/validators/ContainerNameValidator.java

On Fri, Sep 5, 2014 at 4:29 PM, Adrian Cole <adrian.f.c...@gmail.com> wrote:
> hmm I'm suspect of the checkGroup here. I think the line could be
> removed since this is a predicate, not a supplier of groups used to
> create instances.
>
> https://github.com/jclouds/jclouds/blob/master/compute/src/main/java/org/jclouds/compute/internal/FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java#L152
>
> @Override
> public Predicate<String> containsGroup(final String group) {
> checkGroup(group);
>
> On Sat, Aug 9, 2014 at 12:15 PM, Daniel Widdis (JIRA) <j...@apache.org> wrote:
>>
>>     [ 
>> https://issues.apache.org/jira/browse/JCLOUDS-657?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14091866#comment-14091866
>>  ]
>>
>> Daniel Widdis edited comment on JCLOUDS-657 at 8/9/14 7:14 PM:
>> ---------------------------------------------------------------
>>
>> I just experienced the same/similar issue in jclouds 1.7.3, except on 
>> Rackspace (rather than GCE) and with deletion rather than creation.
>>
>> I was attempting to delete a node with uppercase characters in the name.  I 
>> used the following code to attempt to delete by private IP address (in my 
>> case String ipAddr = "10.208.232.65"):
>> {code}
>>       nodes = computeService
>>           .destroyNodesMatching(new Predicate<NodeMetadata>() {
>>             @Override
>>             public boolean apply(final NodeMetadata input) {
>>               return input.getPrivateAddresses().contains(ipAddr);
>>             }
>>           });
>> {code}
>>
>> The sole instance on my account at the time was named "Cloud-Server-35".  
>> This code worked successfully many times when I had more than one instance 
>> on the account, but only failed on the last one.  I received:
>> java.lang.IllegalArgumentException: Object 'Cloud-Server' doesn't match dns 
>> naming constraints. Reason: Should be only lowercase.
>>
>> Full stack trace at http://pastebin.com/PKuMqkqz
>>
>>
>> was (Author: dbwiddis):
>> I just experienced the same/similar issue in jclouds 1.7.3, except on 
>> Rackspace (rather than GCE) and with deletion rather than creation.
>>
>> I was attempting to delete a node with uppercase characters in the name.  I 
>> used the following code to attempt to delete by private IP address (in my 
>> case String ipAddr = "10.208.232.65"):
>> {code}
>>       nodes = computeService
>>           .destroyNodesMatching(new Predicate<NodeMetadata>() {
>>             @Override
>>             public boolean apply(final NodeMetadata input) {
>>               return input.getPrivateAddresses().contains(ipAddr);
>>             }
>>           });
>> {code}
>>
>> The sole instance on my account at the time was named "Cloud-Server-35".  I 
>> received:
>> java.lang.IllegalArgumentException: Object 'Cloud-Server' doesn't match dns 
>> naming constraints. Reason: Should be only lowercase.
>>
>> Full stack trace at http://pastebin.com/PKuMqkqz
>>
>>> createNodesInGroup fails on GCE if there are existing instances which fail 
>>> name validation
>>> ------------------------------------------------------------------------------------------
>>>
>>>                 Key: JCLOUDS-657
>>>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-657
>>>             Project: jclouds
>>>          Issue Type: Bug
>>>          Components: jclouds-labs-google
>>>    Affects Versions: 1.7.3
>>>            Reporter: Sunil Shah
>>>            Assignee: Chris Custine
>>>
>>> JClouds provisioning fails when we try to create nodes in a GCE project 
>>> that has one or more existing instances with names of the format 
>>> "ss-production" - where ss is any two letter string and production is any 
>>> string.
>>> These are valid instance names in GCE but fail JClouds validation - which 
>>> seems to split on the hyphen and requires individual components to be 
>>> greater than 3 characters.
>>> A full stack trace is here:
>>> https://gist.github.com/ssk2/853ba032135c60621a9a
>>> I think the offending logic is in this method: 
>>> https://github.com/jclouds/jclouds-labs-google/blob/master/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java#L82
>>>  - which iterates over all groups.
>>> To fix, I think it'd be necessary to change how validation happens to 
>>> validate on the entire name.
>>
>>
>>
>> --
>> This message was sent by Atlassian JIRA
>> (v6.2#6252)

Reply via email to