Projects >> eucalyptus >>02ded6bd39ec9cdddce4992c0d3a7577df265f40

Chunk
Conflicting content
package com.eucalyptus.cloudwatch.domain.absolute;

import java.util.Date;
<<<<<<< HEAD
import java.util.Map;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;

import javax.persistence.Column;
=======
import java.util.HashMap;
import java.util.Map;
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
import javax.persistence.EntityTransaction;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
Solution content
package com.eucalyptus.cloudwatch.domain.absolute;

import java.util.Date;
import java.util.Map;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;

import javax.persistence.Column;
import javax.persistence.EntityTransaction;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
File
AbsoluteMetricHelper.java
Developer's decision
Manual
Kind of conflict
Import
Chunk
Conflicting content
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
<<<<<<< HEAD
import org.mortbay.log.Log;

import com.eucalyptus.cloudwatch.domain.metricdata.MetricDataQueue.AbsoluteMetricCache;
import com.eucalyptus.cloudwatch.domain.metricdata.MetricDataQueue.AbsoluteMetricCacheKey;
=======
import com.eucalyptus.cloudwatch.domain.metricdata.MetricDataQueue.AbsoluteMetricCache;
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
import com.eucalyptus.entities.Entities;
import com.eucalyptus.records.Logs;
Solution content
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.mortbay.log.Log;

import com.eucalyptus.cloudwatch.domain.metricdata.MetricDataQueue.AbsoluteMetricCache;
import com.eucalyptus.cloudwatch.domain.metricdata.MetricDataQueue.AbsoluteMetricCacheKey;
import com.eucalyptus.entities.Entities;
import com.eucalyptus.records.Logs;
File
AbsoluteMetricHelper.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
    }
    return returnValue;
  }
<<<<<<< HEAD
=======
  
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a

  /**
   * Delete all absolute metric history before a certain date
Solution content
    }
    return returnValue;
  }

  /**
   * Delete all absolute metric history before a certain date
File
AbsoluteMetricHelper.java
Developer's decision
Version 1
Kind of conflict
Blank
Chunk
Conflicting content
package com.eucalyptus.images;

<<<<<<< HEAD
import static com.eucalyptus.util.Parameters.checkParam;
import static org.hamcrest.Matchers.notNullValue;

import java.util.ArrayList;
=======
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
Solution content
package com.eucalyptus.images;

import static com.eucalyptus.util.Parameters.checkParam;
import static org.hamcrest.Matchers.notNullValue;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
File
ImageManager.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import java.util.Set;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceException;
<<<<<<< HEAD

import com.eucalyptus.compute.ClientComputeException;
import org.apache.commons.lang.StringUtils;
=======
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
import org.apache.log4j.Logger;
import com.eucalyptus.auth.Accounts;
import com.eucalyptus.auth.AuthException;
Solution content
import java.util.Set;

import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceException;

import com.eucalyptus.compute.ClientComputeException;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import com.eucalyptus.auth.Accounts;
import com.eucalyptus.auth.AuthException;
File
ImageManager.java
Developer's decision
Manual
Kind of conflict
Import
Chunk
Conflicting content
        @Override
        public ImageInfo get( ) {
          try {
<<<<<<< HEAD
            return Images.createFromManifest( ctx.getUserFullName( ), request.getName( ), request.getDescription( ), arch, virtualizationType, eki, eri, manifest );
=======
            return Images.registerFromManifest( ctx.getUserFullName( ), request.getName( ), request.getDescription( ), arch, eki, eri, manifest );
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
          } catch ( Exception ex ) {
            LOG.error( ex );
            Logs.extreme( ).error( ex, ex );
Solution content
          try {
        @Override
        public ImageInfo get( ) {
            return Images.registerFromManifest( ctx.getUserFullName( ), request.getName( ), request.getDescription( ), arch, virtualizationType, eki, eri, manifest );
          } catch ( Exception ex ) {
            LOG.error( ex );
            Logs.extreme( ).error( ex, ex );
File
ImageManager.java
Developer's decision
Manual
Kind of conflict
Method invocation
Return statement
Chunk
Conflicting content
      if ( img instanceof StaticDiskImage ) {
        StaticDiskImages.flush( ( StaticDiskImage ) img );
      }
<<<<<<< HEAD
      ImageUtil.cleanDeregistered();
=======
      tx.commit( );
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
    } catch ( ConstraintViolationException cve ) {
      tx.rollback( );
      throw new InstanceNotTerminatedException( "To deregister " + imageId + " all associated instances must be in the terminated state." );
Solution content
        StaticDiskImages.flush( ( StaticDiskImage ) img );
      }
//      ImageUtil.cleanDeregistered();
    } catch ( ConstraintViolationException cve ) {
      tx.rollback( );
File
Images.java
Developer's decision
Manual
Kind of conflict
Method invocation
Chunk
Conflicting content
    }
  }
  
<<<<<<< HEAD
  public static ImageInfo createFromManifest( UserFullName creator, String imageNameArg, String imageDescription, ImageMetadata.Architecture requestArch, ImageMetadata.VirtualizationType virtType, String eki, String eri, ImageManifest manifest ) throws EucalyptusCloudException {
=======
  public static ImageInfo registerFromManifest( UserFullName creator,
                                                String imageNameArg,
                                                String imageDescription,
                                                ImageMetadata.Architecture requestArch,
                                                String eki,
                                                String eri,
                                                ImageManifest manifest ) throws Exception {
    PutGetImageInfo ret = prepareFromManifest( creator, imageNameArg, imageDescription, requestArch, eki, eri, manifest );
    ret.setState( ImageMetadata.State.available );
    ret = persistRegistration( creator, manifest, ret );
    return ret;
  }
  
  public static ImageInfo createPendingFromManifest( UserFullName creator,
                                                     String imageNameArg,
                                                     String imageDescription,
                                                     ImageMetadata.Architecture requestArch,
                                                     String eki,
                                                     String eri,
                                                     ImageManifest manifest ) throws Exception {
    PutGetImageInfo ret = prepareFromManifest( creator, imageNameArg, imageDescription, requestArch, eki, eri, manifest );
    ret.setState( ImageMetadata.State.hidden );
    ret = persistRegistration( creator, manifest, ret );
    return ret;
  }
  
  public static void registerFromPendingImage( String imageId ) throws Exception {
    EntityTransaction tx = Entities.get( PutGetImageInfo.class );
    try {
      ImageInfo ret = Entities.uniqueResult( Images.exampleWithImageId( imageId ) );
      ret.setState( State.available );
      tx.commit( );
    } catch ( Exception e ) {
      tx.rollback( );
      throw new EucalyptusCloudException( "Failed to update image: " + imageId + " because of: " + e.getMessage( ), e );
    }
  }
  
  private static PutGetImageInfo prepareFromManifest( UserFullName creator,
                                                      String imageNameArg,
                                                      String imageDescription,
                                                      ImageMetadata.Architecture requestArch,
                                                      String eki,
                                                      String eri,
                                                      ImageManifest manifest ) throws Exception {
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
    PutGetImageInfo ret = null;
    String imageName = ( imageNameArg != null )
      ? imageNameArg
Solution content
    }
  }
  
  public static ImageInfo registerFromManifest( UserFullName creator,
                                                String imageNameArg,
                                                String imageDescription,
                                                ImageMetadata.Architecture requestArch,
                                                ImageMetadata.VirtualizationType virtType,
                                                String eki,
                                                String eri,
                                                ImageManifest manifest ) throws Exception {
    PutGetImageInfo ret = prepareFromManifest( creator, imageNameArg, imageDescription, requestArch, virtType, eki, eri, manifest );
    ret.setState( ImageMetadata.State.available );
    ret = persistRegistration( creator, manifest, ret );
    return ret;
  }
  
  public static ImageInfo createPendingFromManifest( UserFullName creator,
                                                     String imageNameArg,
                                                     String imageDescription,
                                                     ImageMetadata.Architecture requestArch,
                                                     ImageMetadata.VirtualizationType virtType,
                                                     String eki,
                                                     String eri,
                                                     ImageManifest manifest ) throws Exception {
    PutGetImageInfo ret = prepareFromManifest( creator, imageNameArg, imageDescription, requestArch, virtType, eki, eri, manifest );
    ret.setState( ImageMetadata.State.hidden );
    ret = persistRegistration( creator, manifest, ret );
    return ret;
  }
  
  public static void registerFromPendingImage( String imageId ) throws Exception {
    EntityTransaction tx = Entities.get( PutGetImageInfo.class );
    try {
      ImageInfo ret = Entities.uniqueResult( Images.exampleWithImageId( imageId ) );
      ret.setState( State.available );
      tx.commit( );
    } catch ( Exception e ) {
      tx.rollback( );
      throw new EucalyptusCloudException( "Failed to update image: " + imageId + " because of: " + e.getMessage( ), e );
    }
  }
  
  private static PutGetImageInfo prepareFromManifest( UserFullName creator,
                                                      String imageNameArg,
                                                      String imageDescription,
                                                      ImageMetadata.Architecture requestArch,
                                                      ImageMetadata.VirtualizationType virtType, 
                                                      String eki,
                                                      String eri,
                                                      ImageManifest manifest ) throws Exception {
    PutGetImageInfo ret = null;
    String imageName = ( imageNameArg != null )
      ? imageNameArg
File
Images.java
Developer's decision
Manual
Kind of conflict
Method declaration
Method signature
Chunk
Conflicting content
                                    manifest.getChecksumType( ) );
        break;
      case machine:
<<<<<<< HEAD
    	if(ImageMetadata.Platform.windows.equals(imagePlatform)){
    		  virtType = ImageMetadata.VirtualizationType.hvm;
    	}
    	if(	ImageMetadata.VirtualizationType.hvm.equals(virtType) ){
    	    	eki = null; 
    	    	eri = null;
    	}
        ret = new MachineImageInfo( creator, ImageUtil.newImageId( ImageMetadata.Type.machine.getTypePrefix( ), manifest.getImageLocation( ) ),
                                    imageName, imageDescription, manifest.getSize( ), imageArch, imagePlatform,
                                    manifest.getImageLocation( ), manifest.getBundledSize( ), manifest.getChecksum( ), manifest.getChecksumType( ), eki, eri , virtType);
=======
        if ( ImageMetadata.Platform.windows.equals( imagePlatform ) ) {
          eki = null;
          eri = null;
        }
        ret = new MachineImageInfo( creator,
                                    Crypto.generateId( manifest.getImageLocation( ), ImageMetadata.Type.machine.getTypePrefix( ) ),
                                    imageName,
                                    imageDescription,
                                    manifest.getSize( ),
                                    imageArch,
                                    imagePlatform,
                                    manifest.getImageLocation( ),
                                    manifest.getBundledSize( ),
                                    manifest.getChecksum( ),
                                    manifest.getChecksumType( ),
                                    eki,
                                    eri );
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
        break;
    }
    if ( ret == null ) {
Solution content
        break;
      case machine:
    	if(ImageMetadata.Platform.windows.equals(imagePlatform)){
    		  virtType = ImageMetadata.VirtualizationType.hvm;
    	}
    	if(	ImageMetadata.VirtualizationType.hvm.equals(virtType) ){
    	    	eki = null; 
    	    	eri = null;
    	}
        ret = new MachineImageInfo( creator, Crypto.generateId( manifest.getImageLocation( ), ImageMetadata.Type.machine.getTypePrefix( ) ),
                                    imageName, imageDescription, manifest.getSize( ), imageArch, imagePlatform,
                                    manifest.getImageLocation( ), manifest.getBundledSize( ), manifest.getChecksum( ), manifest.getChecksumType( ), eki, eri , virtType);
        break;
    }
    if ( ret == null ) {
File
Images.java
Developer's decision
Manual
Kind of conflict
If statement
Method invocation
Variable
Chunk
Conflicting content
  
  }
  // EUCA-6935 Changing the way attached volumes are cleaned up.
<<<<<<< HEAD
  private static void cleanUpAttachedVolumes(final VmInstance vm) {
    if (VmStateSet.DONE.apply(vm)) {
	  try {
		  
		if(vm.getTransientVolumeState() != null && vm.getTransientVolumeState().getAttachments() != null 
				&& !vm.getTransientVolumeState().getAttachments().isEmpty()) {
		  for (VmVolumeAttachment attachment : vm.getTransientVolumeState().getAttachments()) {
		    try {
		      final Volume volume = Volumes.lookup( null, attachment.getVolumeId());
		      if (State.BUSY.equals(volume.getState())) {
			    volume.setState( State.EXTANT );
			  }
		  	} catch (Exception ex) {
			  LOG.error(vm.getInstanceId() + ": Failed to cleanup transient volume attachment for " + attachment.getVolumeId(), ex);
			}
		  }
		}
		
		if(vm.getBootRecord() != null && vm.getBootRecord().getPersistentVolumes() != null
				&& !vm.getBootRecord().getPersistentVolumes().isEmpty()) {
		  final ServiceConfiguration sc = Topology.lookup(Storage.class, vm.lookupPartition());
		  for (VmVolumeAttachment attachment : vm.getBootRecord().getPersistentVolumes()) {
			// Check for the delete on terminate flag and fire the delete request.
		    if (attachment.getDeleteOnTerminate()) {
			  try {
				Volume volume = Volumes.lookup( null, attachment.getVolumeId());
				LOG.debug(vm.getInstanceId() + ": Firing delete request for " + attachment.getVolumeId());
				DeleteStorageVolumeResponseType reply = AsyncRequests.sendSync( sc, new DeleteStorageVolumeType(attachment.getVolumeId()));
	  		    if(null != reply && reply.get_return()) {
	              Volumes.annihilateStorageVolume(volume);
	  		    } else {
	  		      LOG.error(vm.getInstanceId() + ": Failed to delete volume " + attachment.getVolumeId());
	    		}
			  } catch (Exception ex) {
				LOG.error(vm.getInstanceId() + ": Failed to cleanup persistent volume attachment for " + attachment.getVolumeId(), ex);
			  }
		    }
		  }
		}
		
	  } catch (Exception ex) {
	    LOG.error(vm.getInstanceId() + ": Failed to cleanup attached volumes", ex);
	  }
  	}
=======
  private static void cleanUpAttachedVolumes( final VmInstance vm ) {
    try {
      vm.eachVolumeAttachment( new Predicate( ) {
        @Override
        public boolean apply( final VmVolumeAttachment arg0 ) {
          try {
            
            if ( VmStateSet.DONE.apply( vm ) && !"/dev/sda1".equals( arg0.getDevice( ) ) ) {
              try {
            	VmInstance vmInstance = Entities.merge( arg0.getVmInstance( ) );
                vmInstance.getTransientVolumeState( ).removeVolumeAttachment( arg0.getVolumeId( ) );
              } catch ( NoSuchElementException ex ) {
                Logs.extreme( ).debug( ex );
              }
            }
            
            try {
            	//Send forcible detach. Detach is idempotent so calling on already detached volume should be no problem
              //final ServiceConfiguration sc = Topology.lookup( Storage.class, vm.lookupPartition( ) );
              //AsyncRequests.sendSync( sc, new DetachStorageVolumeType( arg0.getVolumeId( ) ) );
            } catch ( Exception ex ) {
              LOG.debug( ex );
              Logs.extreme( ).debug( ex, ex );
            } catch (Throwable ex) {
                LOG.debug( ex );
                Logs.extreme( ).debug( ex, ex );
            }
            
            try {
              //ebs with either default deleteOnTerminate or user specified deleteOnTerminate and TERMINATING
              if ( ( VmStateSet.DONE.apply( vm ) ) && arg0.getDeleteOnTerminate( ) ) {
                final ServiceConfiguration sc = Topology.lookup( Storage.class, vm.lookupPartition( ) );
                AsyncRequests.dispatch( sc, new DeleteStorageVolumeType( arg0.getVolumeId( ) ) );
                Volume volume = Volumes.lookup( null, arg0.getVolumeId( ) );
                Volumes.annihilateStorageVolume( volume );
              }
            } catch ( Exception ex ) {
              LOG.debug( ex );
              Logs.extreme( ).debug( ex, ex );
            } catch (Throwable ex) {
                LOG.debug( ex );
                Logs.extreme( ).debug( ex, ex );
            }
            
            return true;
          } catch ( final Exception e ) {
            LOG.error( "Failed to clean up attached volume: "
                       + arg0.getVolumeId( )
                       + " for instance "
                       + vm.getInstanceId( )
                       + ".  The request failed because of: "
                       + e.getMessage( ), e );
            return true;
          }
        }
      } );
    } catch ( final Exception ex ) {
      LOG.error( "Failed to lookup Storage Controller configuration for: " + vm.getInstanceId( ) + " (placement=" + vm.getPartition( ) + ").  " );
    }
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
  }
  
  public static String asMacAddress( final String instanceId ) {
Solution content
  }
  
  // EUCA-6935 Changing the way attached volumes are cleaned up.
  private static void cleanUpAttachedVolumes(final VmInstance vm) {
    if (VmStateSet.DONE.apply(vm)) {
	  try {
		  
		if(vm.getTransientVolumeState() != null && vm.getTransientVolumeState().getAttachments() != null 
				&& !vm.getTransientVolumeState().getAttachments().isEmpty()) {
		  for (VmVolumeAttachment attachment : vm.getTransientVolumeState().getAttachments()) {
		    try {
		      final Volume volume = Volumes.lookup( null, attachment.getVolumeId());
		      if (State.BUSY.equals(volume.getState())) {
			    volume.setState( State.EXTANT );
			  }
		  	} catch (Exception ex) {
			  LOG.error(vm.getInstanceId() + ": Failed to cleanup transient volume attachment for " + attachment.getVolumeId(), ex);
			}
		  }
		}
		
		if(vm.getBootRecord() != null && vm.getBootRecord().getPersistentVolumes() != null
				&& !vm.getBootRecord().getPersistentVolumes().isEmpty()) {
		  final ServiceConfiguration sc = Topology.lookup(Storage.class, vm.lookupPartition());
		  for (VmVolumeAttachment attachment : vm.getBootRecord().getPersistentVolumes()) {
			// Check for the delete on terminate flag and fire the delete request.
		    if (attachment.getDeleteOnTerminate()) {
			  try {
				Volume volume = Volumes.lookup( null, attachment.getVolumeId());
				LOG.debug(vm.getInstanceId() + ": Firing delete request for " + attachment.getVolumeId());
				DeleteStorageVolumeResponseType reply = AsyncRequests.sendSync( sc, new DeleteStorageVolumeType(attachment.getVolumeId()));
	  		    if(null != reply && reply.get_return()) {
	              Volumes.annihilateStorageVolume(volume);
	  		    } else {
	  		      LOG.error(vm.getInstanceId() + ": Failed to delete volume " + attachment.getVolumeId());
	    		}
			  } catch (Exception ex) {
				LOG.error(vm.getInstanceId() + ": Failed to cleanup persistent volume attachment for " + attachment.getVolumeId(), ex);
			  }
		    }
		  }
		}
		
	  } catch (Exception ex) {
	    LOG.error(vm.getInstanceId() + ": Failed to cleanup attached volumes", ex);
	  }
  	}
  }
  
  public static String asMacAddress( final String instanceId ) {
File
VmInstances.java
Developer's decision
Version 1
Kind of conflict
If statement
Method signature
Try statement
Chunk
Conflicting content
import java.net.InetAddress;
import java.net.UnknownHostException;
<<<<<<< HEAD
=======
import java.util.NoSuchElementException;
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
import org.apache.log4j.Logger;
import org.xbill.DNS.Name;
import org.xbill.DNS.Record;
Solution content
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.NoSuchElementException;
import org.apache.log4j.Logger;
import org.xbill.DNS.Name;
import org.xbill.DNS.Record;
File
SplitHorizonResolver.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
import com.eucalyptus.cluster.ClusterConfiguration;
import com.eucalyptus.component.ServiceConfiguration;
import com.eucalyptus.component.ServiceConfigurations;
<<<<<<< HEAD
=======
import com.eucalyptus.component.Topology;
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
import com.eucalyptus.component.id.ClusterController;
import com.eucalyptus.configurable.ConfigurableClass;
import com.eucalyptus.configurable.ConfigurableField;
Solution content
import com.eucalyptus.cluster.ClusterConfiguration;
import com.eucalyptus.component.ServiceConfiguration;
import com.eucalyptus.component.ServiceConfigurations;
import com.eucalyptus.component.id.ClusterController;
import com.eucalyptus.configurable.ConfigurableClass;
import com.eucalyptus.configurable.ConfigurableField;
File
SplitHorizonResolver.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
   */
  @Override
  public DnsResponse lookupRecords( Record query ) {
<<<<<<< HEAD
    if ( RequestType.PTR.apply( query ) ) {
      final InetAddress ip = DomainNameRecords.inAddrArpaToInetAddress( query.getName( ) );
      if ( InstanceDomainNames.isInstance( ip ) ) {
        final String hostAddress = ip.getHostAddress( );
        if ( Addresses.getInstance( ).contains( hostAddress ) ) {
          VmInstances.lookupByPublicIp( hostAddress );//existence check
          final Name dnsName = InstanceDomainNames.fromInetAddress( InstanceDomainNames.EXTERNAL, ip );
          return DnsResponse.forName( query.getName( ) ).answer( DomainNameRecords.ptrRecord( dnsName, ip ) );
        } else {
          VmInstances.lookupByPrivateIp( hostAddress );//existence check
          final Name dnsName = InstanceDomainNames.fromInetAddress( InstanceDomainNames.INTERNAL, ip );
          return DnsResponse.forName( query.getName( ) ).answer( DomainNameRecords.ptrRecord( dnsName, ip ) );
        }
      }
    }
    return DnsResponse.forName( query.getName( ) ).nxdomain( );
=======
    Name name = query.getName( );
    if ( RequestType.PTR.apply( query ) ) {
      InetAddress ip = DomainNameRecords.inAddrArpaToInetAddress( name );
      if ( InstanceDomainNames.isInstance( ip ) ) {
        return DnsResponse.forName( name )
                          .answer( DomainNameRecords.ptrRecord( name, ip ) );
      }
    }
    return DnsResponse.forName( name ).nxdomain( );
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
  }
  
  public static class InternalARecordResolver extends SplitHorizonResolver implements DnsResolver {
Solution content
   */
  @Override
  public DnsResponse lookupRecords( Record query ) {
    if ( RequestType.PTR.apply( query ) ) {
      final InetAddress ip = DomainNameRecords.inAddrArpaToInetAddress( query.getName( ) );
      if ( InstanceDomainNames.isInstance( ip ) ) {
        final String hostAddress = ip.getHostAddress( );
        if ( Addresses.getInstance( ).contains( hostAddress ) ) {
          VmInstances.lookupByPublicIp( hostAddress );//existence check
          final Name dnsName = InstanceDomainNames.fromInetAddress( InstanceDomainNames.EXTERNAL, ip );
          return DnsResponse.forName( query.getName( ) ).answer( DomainNameRecords.ptrRecord( dnsName, ip ) );
        } else {
          VmInstances.lookupByPrivateIp( hostAddress );//existence check
          final Name dnsName = InstanceDomainNames.fromInetAddress( InstanceDomainNames.INTERNAL, ip );
          return DnsResponse.forName( query.getName( ) ).answer( DomainNameRecords.ptrRecord( dnsName, ip ) );
        }
      }
    }
    return DnsResponse.forName( query.getName( ) ).nxdomain( );
  }
  
  public static class InternalARecordResolver extends SplitHorizonResolver implements DnsResolver {
File
SplitHorizonResolver.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Return statement
Variable
Chunk
Conflicting content
      return super.lookupRecords( query );
    }
    
<<<<<<< HEAD
=======
    @Override
    public boolean checkAccepts( Record query, InetAddress source ) {
      return RequestType.PTR.apply( query )
        ? super.checkAccepts( query, source ) :
        super.checkAccepts( query, source )
            && ( InstanceDomainNames.isInstanceSubdomain( query.getName( ) )
            && !query.getName( ).subdomain( InstanceDomainNames.EXTERNAL.get( ) ) );
    }
    
  }
  
  public static class HorizonARecordResolver extends SplitHorizonResolver implements DnsResolver {
    
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
    @Override
    public boolean checkAccepts( Record query, InetAddress source ) {
      return RequestType.PTR.apply( query )
Solution content
      return super.lookupRecords( query );
    }
    
    @Override
    public boolean checkAccepts( Record query, InetAddress source ) {
      return RequestType.PTR.apply( query )
File
SplitHorizonResolver.java
Developer's decision
Version 1
Kind of conflict
Annotation
Class signature
Method declaration
Chunk
Conflicting content
      return RequestType.PTR.apply( query )
        ? super.checkAccepts( query, source ) :
        super.checkAccepts( query, source )
<<<<<<< HEAD
            && ( InstanceDomainNames.isInstanceSubdomain( query.getName( ) )
            && !query.getName( ).subdomain( InstanceDomainNames.EXTERNAL.get( ) ) );
    }
    
  }
  
  public static class HorizonARecordResolver extends SplitHorizonResolver implements DnsResolver {
    
    @Override
    public boolean checkAccepts( Record query, InetAddress source ) {
      return RequestType.PTR.apply( query )
        ? super.checkAccepts( query, source ) :
        super.checkAccepts( query, source )
=======
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
            && Subnets.isSystemManagedAddress( source )
            && query.getName( ).subdomain( InstanceDomainNames.EXTERNAL.get( ) );
    }
Solution content
      return RequestType.PTR.apply( query )
        ? super.checkAccepts( query, source ) :
        super.checkAccepts( query, source )
            && ( InstanceDomainNames.isInstanceSubdomain( query.getName( ) )
            && !query.getName( ).subdomain( InstanceDomainNames.EXTERNAL.get( ) ) );
    }
    
  }
  
  public static class HorizonARecordResolver extends SplitHorizonResolver implements DnsResolver {
    
    @Override
    public boolean checkAccepts( Record query, InetAddress source ) {
      return RequestType.PTR.apply( query )
        ? super.checkAccepts( query, source ) :
        super.checkAccepts( query, source )
            && Subnets.isSystemManagedAddress( source )
            && query.getName( ).subdomain( InstanceDomainNames.EXTERNAL.get( ) );
    }
File
SplitHorizonResolver.java
Developer's decision
Version 1
Kind of conflict
Annotation
Class signature
Method invocation
Method signature
Return statement
Chunk
Conflicting content
                && !Subnets.isSystemManagedAddress( DomainNameRecords.inAddrArpaToInetAddress( query.getName( ) ) ) ) {
      return true;
    }
<<<<<<< HEAD
    return false;
=======
    return true;
>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
  }
  
  @Override
Solution content
      return true;
    }
                && !Subnets.isSystemManagedAddress( DomainNameRecords.inAddrArpaToInetAddress( query.getName( ) ) ) ) {
    return false;
  }
  
  @Override
File
RecursiveDnsResolver.java
Developer's decision
Version 1
Kind of conflict
Return statement
Chunk
Conflicting content
    return InetAddresses.forString( ipString );
  }
  
<<<<<<< HEAD
=======
  public static Record ptrRecord( Name name, Name inAddrArpa ) {
    return ptrRecord( name, inAddrArpaToInetAddress( inAddrArpa ) );
  }

>>>>>>> 37c5f3ec9a6e3e150ebacc274430f02a2baa679a
  public static Record ptrRecord( Name name, InetAddress ip ) {
    return new PTRRecord( ReverseMap.fromAddress( ip ), DClass.IN, TTL, name );
  }
Solution content
    return InetAddresses.forString( ipString );
  }
  
  public static Record ptrRecord( Name name, Name inAddrArpa ) {
    return ptrRecord( name, inAddrArpaToInetAddress( inAddrArpa ) );
  }

  public static Record ptrRecord( Name name, InetAddress ip ) {
    return new PTRRecord( ReverseMap.fromAddress( ip ), DClass.IN, TTL, name );
  }
File
DomainNameRecords.java
Developer's decision
Version 2
Kind of conflict
Method declaration