[ 
https://issues.apache.org/jira/browse/BROOKLYN-259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15276530#comment-15276530
 ] 

ASF GitHub Bot commented on BROOKLYN-259:
-----------------------------------------

Github user johnmccabe commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/132#discussion_r62522025
  
    --- Diff: 
locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsByonLocationResolverStubbedTest.java
 ---
    @@ -0,0 +1,157 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing,
    + * software distributed under the License is distributed on an
    + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + * KIND, either express or implied.  See the License for the
    + * specific language governing permissions and limitations
    + * under the License.
    + */
    +package org.apache.brooklyn.location.jclouds;
    +
    +import static org.testng.Assert.assertEquals;
    +
    +import java.util.Collection;
    +import java.util.Map;
    +import java.util.Set;
    +
    +import org.apache.brooklyn.api.location.Location;
    +import org.apache.brooklyn.api.location.LocationSpec;
    +import org.apache.brooklyn.api.location.MachineLocation;
    +import org.apache.brooklyn.core.internal.BrooklynProperties;
    +import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
    +import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
    +import 
org.apache.brooklyn.location.byon.FixedListMachineProvisioningLocation;
    +import org.jclouds.compute.domain.ComputeMetadata;
    +import org.jclouds.compute.domain.NodeMetadata;
    +import org.jclouds.compute.domain.NodeMetadata.Status;
    +import org.jclouds.compute.domain.NodeMetadataBuilder;
    +import org.jclouds.compute.domain.Template;
    +import org.jclouds.domain.LoginCredentials;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +import org.testng.annotations.Test;
    +
    +import com.google.common.base.Predicate;
    +import com.google.common.collect.ImmutableList;
    +import com.google.common.collect.ImmutableMap;
    +import com.google.common.collect.ImmutableSet;
    +import com.google.common.collect.Iterables;
    +
    +public class JcloudsByonLocationResolverStubbedTest extends 
AbstractJcloudsStubbedLiveTest {
    +
    +    @SuppressWarnings("unused")
    +    private static final Logger log = 
LoggerFactory.getLogger(JcloudsByonLocationResolverStubbedTest.class);
    +    
    +    private final String nodeId = "mynodeid";
    +    private final String nodePublicAddress = "173.194.32.123";
    +    private final String nodePrivateAddress = "172.168.10.11";
    +    
    +    protected LocalManagementContext newManagementContext() {
    +        // This really is stubbed; no live access to the cloud
    +        LocalManagementContext result = 
LocalManagementContextForTests.builder(true).build();
    +        BrooklynProperties brooklynProperties = 
result.getBrooklynProperties();
    +        
brooklynProperties.put("brooklyn.location.jclouds."+SOFTLAYER_PROVIDER+".identity",
 "myidentity");
    +        
brooklynProperties.put("brooklyn.location.jclouds."+SOFTLAYER_PROVIDER+".credential",
 "mycredential");
    +        return result;
    +
    +    }
    +
    +    @Override
    +    protected NodeCreator newNodeCreator() {
    +        return new NodeCreator() {
    +            @Override
    +            public Set<? extends NodeMetadata> 
listNodesDetailsMatching(Predicate<ComputeMetadata> filter) {
    +                NodeMetadata result = new NodeMetadataBuilder()
    +                        .id(nodeId)
    +                        
.credentials(LoginCredentials.builder().identity("dummy").credential("dummy").build())
    +                        .loginPort(22)
    +                        .status(Status.RUNNING)
    +                        
.publicAddresses(ImmutableList.of(nodePublicAddress))
    +                        
.privateAddresses(ImmutableList.of(nodePrivateAddress))
    +                        .build();
    +                return 
ImmutableSet.copyOf(Iterables.filter(ImmutableList.of(result), filter));
    +            }
    +            @Override
    +            protected NodeMetadata newNode(String group, Template 
template) {
    +                throw new UnsupportedOperationException();
    +            }
    +        };
    +    }
    +
    +    @Test
    +    public void testResolvesHostInSpec() throws Exception {
    +        String spec = 
"jcloudsByon:(provider=\""+SOFTLAYER_PROVIDER+"\",region=\""+SOFTLAYER_AMS01_REGION_NAME+"\",user=\"myuser\",password=\"mypassword\",hosts=\""+nodeId+"\")";
    +        Map<?,?> specFlags = 
ImmutableMap.of(JcloudsLocationConfig.COMPUTE_SERVICE_REGISTRY, 
computeServiceRegistry);
    +
    +        FixedListMachineProvisioningLocation<MachineLocation> location = 
getLocationManaged(spec, specFlags);
    +        
    +        JcloudsSshMachineLocation machine = (JcloudsSshMachineLocation) 
Iterables.getOnlyElement(location.getAllMachines());
    +        assertEquals(machine.getJcloudsId(), nodeId);
    +        assertEquals(machine.getPublicAddresses(), 
ImmutableSet.of(nodePublicAddress));
    +        assertEquals(machine.getPrivateAddresses(), 
ImmutableSet.of(nodePrivateAddress));
    +        
    +        // TODO what user/password should we expect? Fails below because 
has "dummy":
    +//        assertEquals(machine.getUser(), "myuser");
    --- End diff --
    
    This is whats throwing the NPE mentioned earlier, previously it was these 
user/password values that were being used.


> jcloudsByon location spec leaks location instances
> --------------------------------------------------
>
>                 Key: BROOKLYN-259
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-259
>             Project: Brooklyn
>          Issue Type: Bug
>    Affects Versions: 0.9.0
>            Reporter: Aled Sage
>             Fix For: 0.10.0
>
>
> When declaring in brooklyn.properties a location spec such as 
> {noformat}
> jcloudsByon(provider="aws-ec2",region="us-east-1",user="brooklyn",password="pa55w0rd",hosts="i-12345678")
> {noformat}
> It caused new locations to be created and persisted every few seconds, but 
> for those locations to be never deleted.
> ---
> This was caused by changes made in 0.9.0 to {{LocationResolver}} 
> implementations, so that it creates a {{LocationSpec}} rather than 
> instantiating a location directly. Unfortunately, 
> {{JcloudsByonLocationResolver}} had not been updated. The REST api would poll 
> this regularly to find out about the types of location, and on every poll it 
> would create new locations.
> This is similar to the problem encountered for localhost, fixed in time for 
> 0.9.0 in https://github.com/apache/brooklyn-server/pull/97.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to