Bug 717997

Summary: add better validation for localhost urls when creating images with .tld files
Product: [Retired] CloudForms Cloud Engine Reporter: Simeon Pinder <spinder>
Component: DocumentationAssignee: Dan Macpherson <dmacpher>
Status: CLOSED CURRENTRELEASE QA Contact: wes hayutin <whayutin>
Severity: low Docs Contact:
Priority: unspecified    
Version: 1.0.0CC: akarol, clalance, dajohnso, deltacloud-maint, dgao, dmacpher, jrd, jskeoch, lbrindle, ssachdev
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-07 06:15:33 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Simeon Pinder 2011-06-30 15:52:33 UTC
Description of problem:
It is currently necessary for all custom rpm content to be hosted in public repositories so that remote provisioning via ec2 can locate the bits.  During testing/development I assumed it would be possible to host content in a repo local to the aeolus conductor box. This is not yet supported. 

Version-Release number of selected component (if applicable):
imagefactory-0.2.0_15_g14c6294-1.fc14.noarch

How reproducible:
Every time.

Steps to Reproduce:
1.Build tld file like:
  <repositories>
    <repository name='local-jon-rpms'>
      <url>http://localhost/rpms</url>
    </repository>
  </repositories>
2. Build with the tld.
3. Attempt to push the built image to ec2.
  
Actual results:

2011-06-30 10:47:42,984 DEBUG oz.Guest.FedoraRemoteGuest pid(9673) Message: Installing custom packages
2011-06-30 10:47:46,801 DEBUG imagefactory.builders.BaseBuilder.FedoraBuilder pid(9673) Message: Stopping EC2 instance and deleting temp security group
2011-06-30 10:47:47,053 DEBUG imagefactory.builders.BaseBuilder.FedoraBuilder pid(9673) Message: Exception caught in ImageFactory
2011-06-30 10:47:47,059 DEBUG imagefactory.builders.BaseBuilder.FedoraBuilder pid(9673) Message: Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/imagefactory/builders/FedoraBuilder.py", line 485, in push_image
    self.push_image_snapshot(target_image_id, provider, credentials)
  File "/usr/lib/python2.7/site-packages/imagefactory/builders/FedoraBuilder.py", line 497, in push_image_snapshot
    self.push_image_snapshot_ec2(target_image_id, provider, credentials)
  File "/usr/lib/python2.7/site-packages/imagefactory/builders/FedoraBuilder.py", line 749, in push_image_snapshot_ec2
    self.guest.do_customize(guestaddr)
  File "/usr/lib/python2.7/site-packages/oz/RedHat.py", line 481, in do_customize
    'yum -y install %s' % (packstr))
  File "/usr/lib/python2.7/site-packages/oz/RedHat.py", line 314, in guest_execute_command
    "root@" + guestaddr, command])
  File "/usr/lib/python2.7/site-packages/oz/Guest.py", line 74, in subprocess_check_output
    raise oz.OzException.OzException("'%s' failed(%d): %s" % (cmd, retcode, stderr))
OzException: 'ssh -i /etc/oz/id_rsa-icicle-gen -o ServerAliveInterval=30 -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null -o PasswordAuthentication=no root.amazonaws.com yum -y install jboss-on-agent jboss-on-agent-init ' failed(1): Warning: Permanently added 'ec2-204-236-253-56.compute-1.amazonaws.com,204.236.253.56' (RSA) to the list of known hosts.
http://localhost/rpms/repodata/repomd.xml: [Errno 14] PYCURL ERROR 7 - ""
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: local-jon-rpms. Please verify its path and try again

Expected results:
i)Better messaging about why this is not supported and fail on build.
Or
ii)Better instructions on how local repo content could be supported.

Additional info:

Comment 1 Justin Clift 2011-07-02 00:23:00 UTC
As a general thought, with the *specific* URL you're using above ("http://localhost/rpms"), had you set up a web server on localhost, serving out a repo from the "/rpms" URL?

If there's a web server correctly set up on localhost, serving a repo, then it should probably work.  (this might be a bug we need to look at)

All that aside, I'm kind of thinking you were meaning to use a value like:

  file:///some/repo/filesystem/path/

Would you be ok to try that?

(and yep, we need the information on what does/doesn't work clearly on the site)

Comment 2 Chris Lalancette 2011-07-05 13:22:08 UTC
(In reply to comment #1)
> As a general thought, with the *specific* URL you're using above
> ("http://localhost/rpms"), had you set up a web server on localhost, serving
> out a repo from the "/rpms" URL?
> 
> If there's a web server correctly set up on localhost, serving a repo, then it
> should probably work.  (this might be a bug we need to look at)

No, this won't logically work.  The problem is that we execute the command *in the context of the guest*.  So a URL of localhost is essentially telling the guest to fetch the packages from itself.

> 
> All that aside, I'm kind of thinking you were meaning to use a value like:
> 
>   file:///some/repo/filesystem/path/

This also won't work, for the same reason.

Simeon opened another bug for us to actually upload the packages into the guest on behalf of the user, and then essentially do "yum localinstall <foo>".  That is very doable, but will take some time to implement.

Chris Lalancette

Comment 3 wes hayutin 2011-09-28 16:41:43 UTC
making sure all the bugs are at the right version for future queries

Comment 5 jrd 2011-10-03 17:24:13 UTC
https://www.aeolusproject.org/redmine/issues/2117  I believe

Comment 6 wes hayutin 2012-01-12 16:53:16 UTC
adding to sprint tracker

Comment 7 wes hayutin 2012-01-16 16:10:39 UTC
Doc bug...
note that localhost in tdl is not supported and does not translate to the aeolus host server

Comment 10 Lana Brindley 2012-06-07 06:15:33 UTC
Document is now available on docs.redhat.com. Please raise a new bug for any further issues.

LKB