summaryrefslogtreecommitdiff
path: root/ec2-set-apt-sources.py
diff options
context:
space:
mode:
Diffstat (limited to 'ec2-set-apt-sources.py')
-rwxr-xr-xec2-set-apt-sources.py77
1 files changed, 19 insertions, 58 deletions
diff --git a/ec2-set-apt-sources.py b/ec2-set-apt-sources.py
index d48e5167..10fea8ec 100755
--- a/ec2-set-apt-sources.py
+++ b/ec2-set-apt-sources.py
@@ -19,70 +19,31 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import os
-import sys
-import urllib
-import socket
-import apt
-import apt_pkg
+import subprocess
from Cheetah.Template import Template
-def checkServer():
- s = socket.socket()
- try:
- address = '169.254.169.254'
- port = 80
- s.connect((address,port))
- except socket.error, e:
- print "!!! Unable to connect to %s." % address
- sys.exit(0)
+import ec2init
-def detectZone():
- api_ver = '2008-02-01'
+def main():
+ ec2 = ec2init.EC2Init()
- base_url = 'http://169.254.169.254/%s/meta-data' % api_ver
- zone = urllib.urlopen('%s/placement/availability-zone' % base_url).read()
- if zone.startswith("us"):
- archive = "http://us.ec2.archive.ubuntu.com/ubuntu/"
- elif zone.startswith("eu"):
- archive = "http://eu.ec2.archive.ubuntu.com/ubuntu/"
+ mirror = ec2.get_mirror_for_availability_zone()
- return(archive)
+ if not os.path.exists("/var/run/ec2/sources.lists"):
+ t = os.popen("lsb_release -cs").read()
+ codename = t.strip()
-def updateList(filename):
- mirror = detectZone()
- if not os.path.exists("/var/ec2/sources.lists"):
- t = os.popen("lsb_release -c").read()
- codename = t.split()
- distro = codename[1]
-
- mp = {'mirror' : mirror, 'codename' : distro}
- t = Template(file="/etc/ec2-init/templates/sources.list.tmpl", searchList=[mp])
- f = open("/var/ec2/sources.list", "w")
- f.write('%s' %(t))
+ mp = { 'mirror' : mirror, 'codename' : codename }
+ t = Template(file='/etc/ec2-init/templates/sources.list.tmpl', searchList=[mp])
+ f = open("/var/run/ec2/sources.list", "w")
+ f.write(t.respond())
f.close()
- os.system("mv /etc/apt/sources.list /etc/apt/sources.list-ec2-init")
- os.symlink("/var/ec2/sources.list", "/etc/apt/sources.list")
- cache = apt.Cache(apt.progress.OpProgress())
- prog = apt.progress.FetchProgress()
- cache.update(prog)
-
- os.system('touch %s' %(filename))
-
-def get_ami_id():
- api_ver = '2008-02-01'
-
- url = 'http://169.254.169.254/%s/meta-data' % api_ver
- ami_id = urllib.urlopen('%s/ami-id/' %url).read()
- return ami_id
-
-
-checkServer()
-
-ami_id = get_ami_id()
-filename = '/var/ec2/.apt-already-ran.%s' %ami_id
+ if not os.path.exists("/etc/apt/sources.list-ec2-init"):
+ os.rename('/etc/apt/sources.list', '/etc/apt/sources.list-ec2-init')
+ os.symlink('/var/run/ec2/sources.list', '/etc/apt/sources.list')
+ aptget = subprocess.Popen(['apt-get', 'update'])
+ aptget.communicate()
-if os.path.exists(filename):
- print "ec2-set-apt-sources already ran....skipping."
-else:
- updateList(filename)
+if __name__ == '__main__':
+ main()