You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jclouds.apache.org by Poornima BS <po...@gmail.com> on 2016/12/09 04:56:38 UTC

Is GroupName and Keypair related

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).subnetId("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.runScriptOnNodesMatching(
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

Re: Is GroupName and Keypair related

Posted by Ignasi Barrera <na...@apache.org>.
That's right.

You can use the TemplateOptions.nodeNames method to assign names to the
created nodes. If you are creating N nodes in one single call you can
provide the list of names to assign.


I.

On Dec 15, 2016 6:14 AM, "Poornima BS" <po...@gmail.com> wrote:

> 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 <na...@apache.org> wrote:
>
> > BTW, where I said "sensible" I meant "sentitive" :)
> >
> >
> >
> >
> > On 12 December 2016 at 16:40, Ignasi Barrera <ig...@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 <po...@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.gs31@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 <na...@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.gs31@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
> > >>>>
> > >>>
> > >>>
> >
>

Re: Is GroupName and Keypair related

Posted by Poornima BS <po...@gmail.com>.
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 <na...@apache.org> wrote:

> BTW, where I said "sensible" I meant "sentitive" :)
>
>
>
>
> On 12 December 2016 at 16:40, Ignasi Barrera <ig...@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 <po...@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.gs31@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 <na...@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 <po...@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
> >>>>
> >>>
> >>>
>

Re: Is GroupName and Keypair related

Posted by Ignasi Barrera <na...@apache.org>.
BTW, where I said "sensible" I meant "sentitive" :)




On 12 December 2016 at 16:40, Ignasi Barrera <ig...@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 <po...@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 <po...@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 <na...@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 <po...@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
>>>>
>>>
>>>

Re: Is GroupName and Keypair related

Posted by Ignasi Barrera <ig...@gmail.com>.
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 <po...@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 <po...@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 <na...@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 <po...@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
>>>
>>
>>

Re: Is GroupName and Keypair related

Posted by Poornima BS <po...@gmail.com>.
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 <po...@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 <na...@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 <po...@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
>>
>
>

Re: Is GroupName and Keypair related

Posted by Poornima BS <po...@gmail.com>.
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 <na...@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 <po...@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).
> subnetId("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.
> runScriptOnNodesMatching(
> > 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
>

Re: Is GroupName and Keypair related

Posted by Ignasi Barrera <na...@apache.org>.
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 <po...@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).subnetId("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.runScriptOnNodesMatching(
> 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