Hi, Thanks for clarifying my doubts.
Let me summarize, jclouds tries to identify groupName from keypair or securitygroup. Right now this the limitation. While creating nodes we have to use groupName Is there any way we can create nodes without using groupName. In compute API i don't find any methods which does without using groupName. Please correct me if i am wrong. Thanks & Regards, Poornima.BS On Tue, Dec 13, 2016 at 3:12 AM, Ignasi Barrera <n...@apache.org> wrote: > BTW, where I said "sensible" I meant "sentitive" :) > > > > > On 12 December 2016 at 16:40, Ignasi Barrera <ignasi.barr...@gmail.com> > wrote: > > Hi! > > > > I'll try to answer inline: > > > >>> 1. So is it possible to use an existing key pair created from amazon > >>> console and consume from jclouds while launching an instance. > >>> Say keyPair(poornima). > >>> As per my knowledge it can create an instance without error but while > >>> executing script using runScriptOnNodesMatching() gives 'no nodes > matched > >>> filter' with groupName poornima. > > > > That's right > > > >>> 2. In above case we should create key pair from jclouds and consume > from > >>> jclouds. Other option would be create a keypair with prefix > "jclouds#jcloud" > > > > You can create the keypairs yourself or let jclodus create them for > > you. You just need to take the mentioned limitation into account, so > > the group can be resolved. > > Take also into account that the group name is also resolved from the > > security groups, so if you configure access to your instance using the > > TemplateOptions#inboundPorts method, or you create the security groups > > following the jclouds naming convention, jclodus should eb able to > > resolve the group from the security groups the instance is assigned > > to, and you should be able to use whatever name you prefer for the key > > pair. > > But again, this is very sensible and you're relying on this limitation > > of jclouds. > > > >>> 3. if keyPair Name is 'jclouds#Testkeypair' groupname should be > >>> TestKeyPair while creating an instance? > > > > Yes > > > >>> 4. In case of tags can u please elaborate on tags limitation > > > > Here you have the tag restrictions: > > http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ > Tags.html#tag-restrictions > > > > Adding to above points if i want to create keypair using jcloud is it > >> necessary for me to use > >> > >> "jclouds#" prefix while calling createKeyPairInRegion(region,name) > >> > >> If i use without prefix i will get below, > > > > When you access directly the jclouds EC2/AWSEC2 APIs you get a client > > to their API without any addition. Any call you perform using those > > APIs directly will be translated into direct calls to the AWS API. So > > yes, you need to put the prefix if you're doing that. Take into > > account that the value of the prefix can be customized by setting the > > ComputeServiceProperties.RESOURCENAME_PREFIX property, so you'd better > > read that value to make sure you are always setting the right value > > for the prefix. > > > > > > HTH! > > > > I. > > > > > > [1] https://jclouds.apache.org/reference/javadoc/2.0.x/org/ > jclouds/compute/config/ComputeServiceProperties.html#RESOURCENAME_PREFIX > > > > > > > > On 12 December 2016 at 13:05, Poornima BS <poornimabs.g...@gmail.com> > wrote: > >> Also, > >> > >> Adding to above points if i want to create keypair using jcloud is it > >> necessary for me to use > >> > >> "jclouds#" prefix while calling createKeyPairInRegion(region,name) > >> > >> If i use without prefix i will get below, > >> > >> java.util.NoSuchElementException: no nodes matched filter: > >> inGroup(production) > >> at > >> org.jclouds.compute.internal.BaseComputeService. > nodesMatchingFilterAndNotTerminatedExceptionIfNotFound( > BaseComputeService.java:325) > >> at > >> org.jclouds.compute.internal.BaseComputeService. > runScriptOnNodesMatching(BaseComputeService.java:579) > >> at org.jclouds.examples.compute.basics.MainApp.main(MainApp.java:187) > >> error: no nodes matched filter: inGroup(production) > >> > >> Any suggestion would be helpful > >> > >> Thanks & Regards, > >> Poornima.BS > >> > >> On Mon, Dec 12, 2016 at 4:29 PM, Poornima BS <poornimabs.g...@gmail.com > > > >> wrote: > >> > >>> Hi, > >>> > >>> Thanks for your reply. > >>> > >>> I have some doubts, > >>> > >>> 1. So is it possible to use an existing key pair created from amazon > >>> console and consume from jclouds while launching an instance. > >>> Say keyPair(poornima). > >>> As per my knowledge it can create an instance without error but while > >>> executing script using runScriptOnNodesMatching() gives 'no nodes > matched > >>> filter' with groupName poornima. > >>> > >>> 2. In above case we should create key pair from jclouds and consume > from > >>> jclouds. Other option would be create a keypair with prefix > "jclouds#jcloud" > >>> > >>> 3. if keyPair Name is 'jclouds#Testkeypair' groupname should be > >>> TestKeyPair while creating an instance? Is there any workaround for > same > >>> > >>> 4. In case of tags can u please elaborate on tags limitation > >>> > >>> Does it mean each instance in amazon can have 50 tags or overall > account > >>> can have 50 tags. > >>> I want this to be clarified because i am planning to use > >>> userMetaData("Name", "Test") option while launching instance so that > we can > >>> identify machine. > >>> > >>> Please correct me if i am wrong in all above points. > >>> > >>> > >>> Thanks & Regards, > >>> Poornima.BS > >>> > >>> On Fri, Dec 9, 2016 at 10:49 PM, Ignasi Barrera <n...@apache.org> > wrote: > >>> > >>>> Hi Poornima, > >>>> > >>>> This is a limitation specific to the aws-ec2 provider implementation. > >>>> jclouds uses a naming convention and creates the key pairs and > >>>> security groups with a prefix (usually 'jclouds') and a suffix that is > >>>> the "group". When getting the list of nodes, it parses the keys and > >>>> groups an instance is assigned to, and tries to extract the group from > >>>> there. > >>>> > >>>> We could definitely do better by storing the group in an instance tag, > >>>> but instance tags are limited to 50, and tags and user metadata key > >>>> value pairs are stored there. It is possible that we run out of tags > >>>> if we follow that approach, although I believe that won't be the > >>>> common pattern and it is a much consistent approach. (Mind opening a > >>>> JIRA [1] issue to track this?). > >>>> > >>>> In your case, since you are assigning the key pair "jclouds#jcloud", > >>>> jclouds believes it belongs to the "jcloud" group. That's why the > >>>> runScript method does not find groups. If you enable the > >>>> "jclouds.compute" logger at debug level [2] you should see relevant > >>>> logs. > >>>> > >>>> > >>>> HTH! > >>>> > >>>> I. > >>>> > >>>> [1] https://issues.apache.org/jira/browse/JCLOUDS > >>>> [2] https://jclouds.apache.org/reference/logging/ > >>>> > >>>> On 9 December 2016 at 05:56, Poornima BS <poornimabs.g...@gmail.com> > >>>> wrote: > >>>> > Hi, > >>>> > > >>>> > Please let me know how jcloud works wrt groupName and keypair > >>>> > > >>>> > 1. Suppose my groupName and key pair is as below > >>>> > > >>>> > String groupName = "jcloud"; > >>>> > > >>>> > keyPair("jclouds#jcloud") - keypairname created in AWS > >>>> > > >>>> > Then execution of script works fine i.e runScriptOnNodesMatching > >>>> > > >>>> > 2. if i give a different groupName say, > >>>> > > >>>> > String groupName = "jcloudTest"; > >>>> > > >>>> > and use an existing keypair say keyPair("jclouds#jcloud") > >>>> > > >>>> > Then runScriptOnNodesMatching gives error: no nodes matched filter: > >>>> > inGroup(jcloudTest) > >>>> > > >>>> > Please let me know how groupName and keypair work together > >>>> > > >>>> > 3. Also keypair is expected to be appended with "jclouds#" i.e. > jclouds > >>>> > finds for keypair with jclouds# prefix > >>>> > > >>>> > The groupName and keypair name should be same, then how can i create > >>>> > machines in multiple groups. > >>>> > > >>>> > Can u please let me know what is going wrong with using existing > >>>> keypair. > >>>> > > >>>> > ```` > >>>> > Template template = templateBuilder.build(); > >>>> > > >>>> > template.getOptions().as(AWSEC2TemplateOptions.class).subnet > >>>> Id("subnet-a1e1d08b"). > >>>> > > >>>> > keyPair("jclouds#jcloud").overrideLoginPrivateKey(login.credential) > >>>> > ```` > >>>> > By using above template options i dont get issues while launching > >>>> instance, > >>>> > but while executing service i get below error, > >>>> > > >>>> > ```` > >>>> > java.util.NoSuchElementException: no nodes matched filter: > >>>> inGroup(jcloud1) > >>>> > at org.jclouds.compute.internal.BaseComputeService. > >>>> > nodesMatchingFilterAndNotTerminatedExceptionIfNotFound( > >>>> > BaseComputeService.java:325) > >>>> > at org.jclouds.compute.internal.BaseComputeService.runScriptOnN > >>>> odesMatching( > >>>> > BaseComputeService.java:579) > >>>> > at org.jclouds.examples.compute.basics.MainApp.main(MainApp. > java:187) > >>>> > error: no nodes matched filter: inGroup(jcloud1) > >>>> > ```` > >>>> > > >>>> > > >>>> > Thanks & Regards, > >>>> > Poornima.BS > >>>> > >>> > >>> >