<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Coders Like Us &#187; Uncategorized</title>
	<atom:link href="http://coderslike.us/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://coderslike.us</link>
	<description>Things I've learned and stuff I'm thinking about.</description>
	<lastBuildDate>Sat, 31 Mar 2012 00:16:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='coderslike.us' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Coders Like Us &#187; Uncategorized</title>
		<link>http://coderslike.us</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://coderslike.us/osd.xml" title="Coders Like Us" />
	<atom:link rel='hub' href='http://coderslike.us/?pushpress=hub'/>
		<item>
		<title>Eustore, a set of image tools for your cloud</title>
		<link>http://coderslike.us/2012/01/21/eustore-a-set-of-image-tools-for-your-cloud/</link>
		<comments>http://coderslike.us/2012/01/21/eustore-a-set-of-image-tools-for-your-cloud/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 02:12:26 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=580</guid>
		<description><![CDATA[I want to talk about something new we&#8217;re working on at Eucalyptus, but first let me start with a little background. Quite simply, it is a hassle to get an image installed. The current process for Eucalyptus (as we document it) is to download a tarball, untar it, bundle/upload/register the kernel/ramdisk and image itself. That&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=580&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I want to talk about something new we&#8217;re working on at Eucalyptus, but first let me start with a little background. Quite simply, it is a hassle to get an image installed. The current process for Eucalyptus (as we document it) is to download a tarball, untar it, bundle/upload/register the kernel/ramdisk and image itself. That&#8217;s about 11 steps. We thought there must be a simpler way to do this.</p>
<p>What we came up with is eustore. In the spirit of euca2ools (euca- and euare- commands), eustore commands give  you access to a Eucalyptus image store. That&#8217;s store, as in storehouse, not a shop. We have some updated &#8220;base&#8221; images available on our servers. We have a catalog file that contains metadata about those images. The eustore tools simply give you access to those, and let you issue a single command to download an install an image on your local cloud (or any Eucalyptus cloud you have access to).</p>
<p>The code has been checked in with the euca2ools. To install and use the commands, you&#8217;ll need to install from source. Let&#8217;s go over that now.</p>
<p>A python package call &#8220;boto&#8221; is required and you&#8217;ll get that from <a href="https://github.com/">github.com</a></p>
<p><pre class="brush: plain;">

git clone https://github.com/boto/boto.git

</pre></p>
<p>To install boto, simply run the following within the boto directory</p>
<p><pre class="brush: plain;">

python setup.py install

</pre></p>
<p>If you don&#8217;t have bzr, you&#8217;ll need to download it and grab the code with</p>
<p><pre class="brush: plain;">
bzr branch lp:euca2ools
</pre></p>
<p>Installing euca2ools (+eustore) is as simple as running (as root) within the euca2ools directory</p>
<p><pre class="brush: plain;">
python setup.py install
</pre></p>
<p>Once you do this, you&#8217;ll have access to 2 new commands; eustore-describe-images and eustore-install-image. Here are the command summaries;</p>
<p><pre class="brush: plain;">
Usage: eustore-describe-images [options]

Options:
 -h, --help show this help message and exit
 -v, --verbose display more information about images
</pre></p>
<p><pre class="brush: plain;">
Usage: eustore-install-image [options]

Options:
 -h, --help show this help message and exit
 -i IMAGE_NAME, --image_name=IMAGE_NAME
              name of image to install
-t TARBALL, --tarball=TARBALL
              name local image tarball to install from
-s DESCRIPTION, --description=DESCRIPTION
              description of image, mostly used with -t option
-a ARCHITECTURE, --architecture=ARCHITECTURE
              i386 or x86_64, mostly used with -t option
-p PREFIX, --prefix=PREFIX
              prefix to use when naming the image, mostly used with -t option
-b BUCKET, --bucket=BUCKET
              specify the bucket to store the images in
 -k KERNEL_TYPE, --kernel_type=KERNEL_TYPE
              specify the type you're using [xen|kvm]
 -d DIR, --dir=DIR specify a temporary directory for large files
 --kernel=KERNEL Override bundled kernel with one already installed
 --ramdisk=RAMDISK Override bundled ramdisk with one already installed
</pre></p>
<p>eustore-describe-images list the images available at emis.eucalyptus.com. You have the ability to change the url (using the EUSTORE_URL environment variable which is helpful sometimes). The output looks like this;</p>
<p><pre class="brush: plain;">
4150406313 centos i386 2011.07.02 CentOS 5 1.3GB root, Hypervisor-Specific Kernels
1643448352 centos x86_64 2011.07.02 CentOS 5 1.3GB root, Hypervisor-Specific Kernels
3235725435 centos x86_64 2012.1.14 CentOS 5 1.3GB root, Single Kernel
0155946749 centos i386 2011.07.02 CentOS 5 4.5GB root, Hypervisor-Specific Kernels
2606989864 centos x86_64 2011.07.02 CentOS 5 4.5GB root, Hypervisor-Specific Kernels
0598061105 centos x86_64 2012.1.14 CentOS 5 4.5GB root, Single Kernel
0308481541 debian i386 2011.07.02 Debian 6 1.3GB root, Hypervisor-Specific Kernels
3402295892 debian x86_64 2011.07.02 Debian 6 1.3GB root, Hypervisor-Specific Kernels
1450309069 debian x86_64 2012.1.14 Debian 6 1.3GB root, Single Kernel
1258936568 debian i386 2011.07.04 Debian 6 4.5GB root, Hypervisor-Specific Kernels
3056211774 debian x86_64 2011.07.02 Debian 6 4.5GB root, Hypervisor-Specific Kernels
4084351385 debian x86_64 2012.1.14 Debian 6 4.5GB root, Single Kernel
0061180839 ubuntu i386 2011.07.02 Ubuntu 10.04 1.3GB root, Hypervisor-Specific Kernels
3192747366 ubuntu x86_64 2011.07.02 Ubuntu 10.04 1.3GB root, Hypervisor-Specific Kernels
2378540351 ubuntu x86_64 2012.1.14 Ubuntu 10.04 1.3GB root, Single Kernel
1497058306 ubuntu i386 2011.07.02 Ubuntu 10.04 4.5GB root, Hypervisor-Specific Kernels
1463636971 ubuntu x86_64 2011.07.02 Ubuntu 10.04 4.5GB root, Hypervisor-Specific Kernels
0962847746 ubuntu x86_64 2012.1.14 Ubuntu 10.04 4.5GB root, Single Kernel
</pre></p>
<p>To install one of these images on your local cloud, you&#8217;d use eustore-install-image like this;</p>
<p><pre class="brush: plain;">
eustore-install-image -i 3235725435 -b myimages
</pre></p>
<p>This command installs the image named into the myimages bucket on the cloud you are setup to talk to. As with all euca2ools, you&#8217;d first source the eucarc file that came with your cloud credentials. I should point out something about uploading kernel and ramdisk to your cloud. Only the admin can install these. If you have admin credentials, the above command will work fine. If you don&#8217;t and want to install an image anyway, you would use the &#8211;kernel and &#8211;ramdisk options to refer to a kernel id and ramdisk id already installed on the cloud. That way, this command will ignore the kernel and ramdisk bundled with the image and refer to the previously uploaded ones.</p>
<p>The project management is happening here: <a href="https://projects.eucalyptus.com/redmine/projects/eustore/">https://projects.eucalyptus.com/redmine/projects/eustore/</a></p>
<p>It is discussed during the images meetings on IRC  (<a href="https://www.google.com/calendar/b/0/embed?mode=WEEK&amp;src=eucalyptus.com_govp7jcujrd4k6c4m6n1c7ibio@group.calendar.google.com&amp;ctz=America/New_York&amp;gsessionid=FAHh0zdsehqXi52UNpQzCw">calendar here</a>)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/580/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=580&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2012/01/21/eustore-a-set-of-image-tools-for-your-cloud/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>Scripting IAM Part 2: restoring from backup</title>
		<link>http://coderslike.us/2012/01/19/scripting-iam-part-2-restoring-from-backup/</link>
		<comments>http://coderslike.us/2012/01/19/scripting-iam-part-2-restoring-from-backup/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 22:52:02 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://coderslikeus.wordpress.com/?p=570</guid>
		<description><![CDATA[Last time, we talked about a way to save some IAM resources on a cloud to a text file as a way to backup this information. We captured accounts/users/groups and policies. This post will focus on using the backup we created to restore those same resources to a new cloud (or the same one in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=570&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last time, we talked about a way to save some IAM resources on a cloud to a text file as a way to backup this information. We captured accounts/users/groups and policies. This post will focus on using the backup we created to restore those same resources to a new cloud (or the same one in a recovery scenario).</p>
<p>Since I&#8217;ve become fond of Python for some types of scripting, I decided I&#8217;d use python here to parse the text file. Originally, I thought I&#8217;d have python execute the euare- commands itself. Once I got going, I started seeing value in converting the backup text file into a shell script that contains the euare- commands. Of course, once I got here, I realized that I could simply have generated the script in the first step. Ah, well.. water under the bridge. I had a job to do and there&#8217;d be time to go back and re-write things next time around (probably).</p>
<p>We&#8217;ll use the same example set of resources from the last post:</p>
<p><pre class="brush: plain;">

accounts:
my account
user: admin
enduser
user: testuser
policy-name: testpolicy
policy-val: {
 &quot;Statement&quot;:[
 {
 &quot;Effect&quot;: &quot;Allow&quot;,
 &quot;Action&quot;: &quot;*&quot;,
 &quot;Resource&quot;: &quot;*&quot;,
 }
]
}
enduser
user: dev1
enduser
user: dev2
enduser
group: developers
user: dev1
user: dev2
policy-name: allow_all
policy_val: {
 &quot;Statement&quot;:[
 {
 &quot;Effect&quot;: &quot;Allow&quot;,
 &quot;Action&quot;: &quot;*&quot;,
 &quot;Resource&quot;: &quot;*&quot;,
 }
]
}
endgroup
endaccounts

</pre></p>
<p>The script I wrote is pretty brute force. It even has the name of the input file hard-coded! It&#8217;s a simple parser that processes one line at a time, keeping several state booleans that indicate parsing context. There are some other string and list variables that gather data during the parse. When enough data is parsed, euare- commands are emitted to standard out.</p>
<p><pre class="brush: plain;">

#!/usr/bin/env python

def main():
 inAccounts = False
 inUser = False
 inGroup = False
 inPolicy = False

accountName = None
 userName = None
 groupName = None
 policyName = None
 userList = []
 policyLines = []

f = open('post.iam', 'r')
 line = f.readline()
 while (line != &quot;&quot;):
 line = line.strip()
 idx = line.find(':')
 if idx &gt; -1 and not(inPolicy):
 token = line[0:idx]
 if token == 'accounts':
 inAccounts = True
 elif token == 'user':
 inUser = True
 if inGroup:
 userList.append(line[idx+1:].strip())
 else:
 userName = line[idx+1:].strip()
 elif token == 'group':
 inGroup = True
 groupName = line[idx+1:].strip()
 elif token == 'policy-name':
 policyName = line[idx+1:].strip()
 elif token == 'policy-val':
 policyLines.append(line[idx+1:].strip())
 inPolicy = True
 elif line == 'enduser':
 #print &quot;create user: &quot;+userName+&quot; for account &quot;+accountName
 if userName != 'admin':
 print &quot;euare-usercreate -u &quot;+userName+&quot; --delegate=&quot;+accountName
 if policyName != None:
 #print &quot;create policy: &quot;+policyName
 policyCmd = &quot;euare-useruploadpolicy --delegate=&quot;+accountName+&quot; -u &quot;+userName+&quot; -p &quot;+policyName+&quot; -o \&quot;&quot;
 for p in policyLines:
 policyCmd += p.replace(&quot;\&quot;&quot;, &quot;\\\&quot;&quot;)
 policyCmd += &quot;\&quot;&quot;
 print policyCmd
 policyName = None
 policyLines = []
 inPolicy = False
 inUser = False
 userName = None
 elif line == 'endgroup':
 #print &quot;create group: &quot;+groupName+&quot; for account &quot;+accountName +&quot; with users;&quot;
 print &quot;euare-groupcreate -g &quot;+groupName+&quot; --delegate=&quot;+accountName
 for u in userList:
 print &quot;euare-groupadduser --delegate=&quot;+accountName+&quot; -g &quot;+groupName+&quot; -u &quot;+u
 if policyName != None:
 #print &quot;create policy: &quot;+policyName
 policyCmd = &quot;euare-groupuploadpolicy --delegate=&quot;+accountName+&quot; -g &quot;+groupName+&quot; -p &quot;+policyName+&quot; -o \&quot;&quot;
 for p in policyLines:
 policyCmd += p.replace(&quot;\&quot;&quot;, &quot;\\\&quot;&quot;)
 policyCmd += &quot;\&quot;&quot;
 print policyCmd
 policyName = None
 policyLines = []
 inGroup = False
 inPolicy = False
 groupName = None
 userList = []
 elif line == 'endaccounts':
 inAccounts = False
 accountName = None
 else:
 if inAccounts and not(inUser) and not(inGroup) and not(inPolicy):
 accountName = line.strip()
 #print &quot;create account &quot;+accountName
 print &quot;euare-accountcreate -a &quot;+accountName
 print &quot;euare-useraddloginprofile --delegate=&quot;+accountName+&quot; -u admin -p newpassword&quot;
 elif inPolicy:
 policyLines.append(line.strip())

 line = f.readline()

if __name__ == &quot;__main__&quot;:
 main();

</pre></p>
<p>When I run this on the input file, it produces;</p>
<p><pre class="brush: plain;">

euare-accountcreate -a my account
euare-useraddloginprofile --delegate=my account -u admin -p newpassword
euare-usercreate -u testuser --delegate=my account
euare-useruploadpolicy --delegate=my account -u testuser -p testpolicy -o &quot;{\&quot;Statement\&quot;:[{\&quot;Effect\&quot;: \&quot;Allow\&quot;,\&quot;Action\&quot;: \&quot;*\&quot;,\&quot;Resource\&quot;: \&quot;*\&quot;,}]}&quot;
euare-usercreate -u dev1 --delegate=my account
euare-usercreate -u dev2 --delegate=my account
euare-groupcreate -g developers --delegate=my account
euare-groupadduser --delegate=my account -g developers -u dev1
euare-groupadduser --delegate=my account -g developers -u dev2
euare-groupuploadpolicy --delegate=my account -g developers -p allow_all -o &quot;&quot;

</pre></p>
<p>You&#8217;ll notice the euare-addloginprofile commands, which simply set a default password.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/570/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=570&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2012/01/19/scripting-iam-part-2-restoring-from-backup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>Scripting IAM Part 1: Extracting Resources for Backup</title>
		<link>http://coderslike.us/2012/01/16/scripting-iam-part-1-extracting-resources-for-backup/</link>
		<comments>http://coderslike.us/2012/01/16/scripting-iam-part-1-extracting-resources-for-backup/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 01:18:45 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[IAM]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=559</guid>
		<description><![CDATA[Amazon has supported the IAM (Identity and Access Management) API for some time now. The new release of Eucalyptus adds IAM support and got me thinking of how somebody could backup IAM settings. What really got me going on an actual solution was the need to save a set of accounts/users/groups and policies in order [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=559&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre>Amazon has supported the IAM (<a href="https://aws.amazon.com/iam/">Identity and Access Management</a>) API for some time now. The new release of Eucalyptus adds IAM support and got me thinking of how somebody could backup IAM settings. What really got me going on an actual solution was the need to save a set of accounts/users/groups and policies in order to restore them to a new Eucalyptus cloud.
My plan was to generate a data file which contains all of the information and can be parsed fairly easily to restore the information to the destination cloud. I considered writing JSON, but I had some time constraints and didn't feel like fiddling around getting the formatting just so. I chose to output some tokens followed by a colon. It looks like this:
<pre class="brush: plain;">
accounts:
my account
user: admin
enduser
user: testuser
policy-name: testpolicy
policy-val: {
  &quot;Statement&quot;:[
  {
    &quot;Effect&quot;: &quot;Allow&quot;,
    &quot;Action&quot;: &quot;*&quot;,
    &quot;Resource&quot;: &quot;*&quot;,
  }
]
}
enduser
user: dev1
enduser
user: dev2
enduser
group: developers
user: dev1
user: dev2
policy-name: allow_all
policy_val: {
  &quot;Statement&quot;:[
  {
    &quot;Effect&quot;: &quot;Allow&quot;,
    &quot;Action&quot;: &quot;*&quot;,
    &quot;Resource&quot;: &quot;*&quot;,
  }
]
}
endgroup
endaccounts
</pre>

I decided to write a bash script to run the commands and parse their output to produce the above tagged format. What you see below is what I came up with. It assumes you have environment variables set up properly (source the eucarc file). It loops through all accounts, then within each account, all users and groups. For users, it also looks for policies. For groups, it lists the users in the group and looks for policies.
<pre class="brush: plain;">

#!/bin/bash
echo &quot;accounts:&quot;
for i in `euare-accountlist |awk '{ print $1 }'`
do
 echo $i
 for u in `euare-userlistbypath --delegate=$i`
 do
 u2=`echo $u |cut -d/ -f2-`
 u3=`basename $u2`
 echo user: $u3
 if [ `euare-userlistpolicies -u $u3 --delegate=$i|wc -l` &gt; 0 ]
 then
 for p in `euare-userlistpolicies -u $u3 --delegate=$i`
 do
 echo policy-name: $p
 policy=`euare-usergetpolicy -u $u3 -p $p --delegate=$i`
 echo &quot;policy-val: $policy&quot;
 done
 fi
 echo enduser
 done

for j in `euare-grouplistbypath --delegate=$i | tail -n +2`
 do
 k=`echo $j |cut -d/ -f2-`
 l=`basename $k`
 echo group: $l
 for gu in `euare-grouplistusers -g $l --delegate=$i | tail -n +3`
 do
 gu2=`echo $gu |cut -d/ -f2-`
 gu3=`basename $gu2`
 echo user: $gu3
 done
 if [ `euare-grouplistpolicies -g $l --delegate=$i|wc -l` &gt; 0 ]
 then
 for p in `euare-grouplistpolicies -g $l --delegate=$i`
 do
 echo policy-name: $p
 policy=`euare-groupgetpolicy -g $l -p $p --delegate=$i`
 echo &quot;policy-val: $policy&quot;
 done
 fi
 echo endgroup
 done
done
echo endaccounts

</pre>
In the next post, I'll talk about how I used this backup data to restore accounts to a new cloud.</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/559/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=559&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2012/01/16/scripting-iam-part-1-extracting-resources-for-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>2011 in review</title>
		<link>http://coderslike.us/2011/12/31/2011-in-review/</link>
		<comments>http://coderslike.us/2011/12/31/2011-in-review/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 23:37:24 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=557</guid>
		<description><![CDATA[The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog. Here&#8217;s an excerpt: The concert hall at the Syndey Opera House holds 2,700 people. This blog was viewed about 32,000 times in 2011. If it were a concert at Sydney Opera House, it would take about 12 sold-out performances for that many [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=557&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.</p>
<div style="background:url('/wp-content/mu-plugins/annual-reports/img/emailteaser.jpg') no-repeat center center;height:300px;"></div>
<p>Here&#8217;s an excerpt:</p>
<blockquote><p>The concert hall at the Syndey Opera House holds 2,700 people. This blog was viewed about <strong>32,000</strong> times in 2011. If it were a concert at Sydney Opera House, it would take about 12 sold-out performances for that many people to see it.</p></blockquote>
<p><a href="/2011/annual-report/">Click here to see the complete report.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/557/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/557/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/557/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=557&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/12/31/2011-in-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>Automating EBS Volume Attach at Boot Time</title>
		<link>http://coderslike.us/2011/10/27/automating-ebs-volume-attach-at-boot-time/</link>
		<comments>http://coderslike.us/2011/10/27/automating-ebs-volume-attach-at-boot-time/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 20:27:43 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[typica]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=550</guid>
		<description><![CDATA[A few years ago, I found myself attaching volumes to instances with some frequency. The volume often came from a snapshot which contained some test data. Like any lazy programmer, I didn&#8217;t want to do this work over and over again! I wrote this little utility which would examine the user data and mount a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=550&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few years ago, I found myself attaching volumes to instances with some frequency. The volume often came from a snapshot which contained some test data. Like any lazy programmer, I didn&#8217;t want to do this work over and over again! I wrote this little utility which would examine the user data and mount a pre-existing volume, or create a new volume from a snapshot and attach that. Here&#8217;s the code;</p>
<p><pre class="brush: plain;">
import java.io.IOException;
import java.util.List;
import java.util.StringTokenizer;

import com.xerox.amazonws.ec2.AttachmentInfo;
import com.xerox.amazonws.ec2.EC2Exception;
import com.xerox.amazonws.ec2.EC2Utils;
import com.xerox.amazonws.ec2.Jec2;
import com.xerox.amazonws.ec2.VolumeInfo;

public class AttachVolume {

	public static void main(String [] args) {
		try {
			String userData = EC2Utils.getInstanceUserdata();
			StringTokenizer st = new StringTokenizer(userData);
			String accessId = st.nextToken();
			String secretKey = st.nextToken();
			String volumeOrSnapId = st.nextToken();

			Jec2 ec2 = new Jec2(accessId, secretKey);
			String volumeId = null;
			if (volumeOrSnapId.startsWith(&quot;snap-&quot;)) {
				String zone = EC2Utils.getInstanceMetadata(&quot;placement/availability-zone&quot;);
				// create volume from snapshot and wait
				VolumeInfo vinf = ec2.createVolume(null, volumeOrSnapId, zone);
				volumeId = vinf.getVolumeId();
				List&lt;VolumeInfo&gt; vols = ec2.describeVolumes(new String [] {volumeId});
				while (!vols.get(0).getStatus().equals(&quot;available&quot;)) {
					System.out.println(vols.get(0).getStatus());
					try { Thread.sleep(2); } catch (InterruptedException ex) {}
					vols = ec2.describeVolumes(new String [] {volumeId});
				}
			}
			if (volumeOrSnapId.startsWith(&quot;vol-&quot;)) {
				volumeId = volumeOrSnapId;
			}
			// attach volume and wait
			String instanceId = EC2Utils.getInstanceMetadata(&quot;instance-id&quot;);
			ec2.attachVolume(volumeId, instanceId, &quot;/dev/sdh&quot;);
			List&lt;VolumeInfo&gt; vols = ec2.describeVolumes(new String [] {volumeId});
			while (!vols.get(0).getAttachmentInfo().get(0).getStatus().equals(&quot;attached&quot;)) {
				System.out.println(vols.get(0).getAttachmentInfo().get(0).getStatus());
				try { Thread.sleep(2); } catch (InterruptedException ex) {}
				vols = ec2.describeVolumes(new String [] {volumeId});
			}
		} catch (Exception ex) {
			System.err.println(&quot;Couldn't complete the attach : &quot;+ex.getMessage());
			ex.printStackTrace();
			System.exit(-1);
		}
	}
}
</pre></p>
<h3>Requirements</h3>
<ul>
<li>Java Runtime Environment (1.5 or greater)</li>
<li><span class="Apple-style-span" style="font-size:13px;font-weight:normal;"><a href="http://code.google.com/p/typica/">Typica</a> + and it&#8217;s dependencies</span></li>
<li><span class="Apple-style-span" style="font-size:13px;font-weight:normal;">This utility (compiled)</span></li>
</ul>
<h3>A Few Words About the Code</h3>
<p>The first thing you&#8217;ll notice is that user data is being parsed. The expectations are that the following items are passed via user data;</p>
<ul>
<li>access id &#8211; AWS Access Id</li>
<li>secret key &#8211; AWS Secret Key</li>
<li>volumeOrSnapId &#8211; either a volume ID or snapshot ID</li>
</ul>
<p>The code inspects the last parameter to see if it is a snapshot id. If so, it creates a volume and waits for it to become &#8220;available&#8221;. One that&#8217;s done, it gets the instance ID from meta data and attaches the volume at a hard-coded device.  (obviously, this could be in user data which is an exercise I&#8217;ll leave to the reader)</p>
<p>On a linux machines, I&#8217;d often call this from the /etc/rc.local script. I should also note that this works just as well with <a href="http://www.eucalyptus.com">Eucalyptus</a> due to its API fidelity with <a href="http://aws.amazon.com/ec2/">Amazon EC2</a></p>
<p>There you have it!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/550/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/550/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/550/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=550&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/10/27/automating-ebs-volume-attach-at-boot-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>Using the Ruby Fog library to connect with Eucalyptus</title>
		<link>http://coderslike.us/2011/10/19/using-the-ruby-fog-library-to-connect-with-eucalyptus/</link>
		<comments>http://coderslike.us/2011/10/19/using-the-ruby-fog-library-to-connect-with-eucalyptus/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 15:24:17 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[eucalyptus]]></category>
		<category><![CDATA[fog]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=541</guid>
		<description><![CDATA[There is a popular Ruby cloud library called Fog. I&#8217;ve seen a number of applications that use this for connecting to AWS EC2. I&#8217;ve done some testing and it is pretty simple to get Fog talking to Eucalyptus. The first thing you need are your access id and secret key, much like you&#8217;d get from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=541&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There is a popular Ruby cloud library called <a href="https://github.com/geemus/fog">Fog</a>. I&#8217;ve seen a number of applications that use this for connecting to <a href="http://aws.amazon.com/ec2/">AWS EC2</a>. I&#8217;ve done some testing and it is pretty simple to get Fog talking to Eucalyptus. The first thing you need are your access id and secret key, much like you&#8217;d get from EC2. These are available on the credentials tab in Eucalyptus. The other thing you need to specify is the endpoint. In the case of Eucalyptus, that will point to the cloud endpoint for your private cloud (or in this example, the Eucalyptus Community Cloud).</p>
<p>This is an example credentials file, stored in ~/.fog</p>
<p><pre class="brush: plain;">
#######################################################
# Fog Credentials File
#
:default:
  :aws_access_key_id:       IyJWpgObMl2Yp70BlWEP4aNGMfXdhL0FtAx4cQ
  :aws_secret_access_key:   7DeDGG2YMOnOqmWxwnHD5x9Y0PKbwE3xttsew
  :endpoint:                http://ecc.eucalyptus.com:8773/services/Eucalyptus
</pre></p>
<p>Notice that the eucalyptus endpoint requires port 8773 and the &#8220;/services/Eucalyptus&#8221; path.<br />
You can use the Fog interactive tool to test this out. Notice we&#8217;re using the AWS compute provider because the Eucalyptus cloud is API compatible with EC2.</p>
<p><pre class="brush: plain;">
# fog
  Welcome to fog interactive!
  :default provides AWS and AWS
&gt;&gt; servers = Compute[:aws].servers
  &lt;Fog::Compute::AWS::Servers
    filters={}
    []
  &gt;
&gt;&gt;
</pre></p>
<p>As you can see, there are no servers running. By replacing &#8220;servers&#8221; with &#8220;images&#8221;, you can show a list of images available on the ECC.<br />
To start an instance, you can run a command like this;</p>
<p><pre class="brush: plain;">
&gt;&gt; servers = Compute[:aws].servers.create(:image_id =&gt; 'emi-9ACB1363', :flavor_id =&gt; 'm1.small')
  &lt;Fog::Compute::AWS::Server
    id=&quot;i-3D7A079C&quot;,
    ami_launch_index=0,
    availability_zone=&quot;open&quot;,
    block_device_mapping=[],
    client_token=nil,
    dns_name=&quot;euca-0-0-0-0.eucalyptus.eucasys.com&quot;,
    groups=[&quot;default&quot;],
    flavor_id=&quot;m1.small&quot;,
    image_id=&quot;emi-9ACB1363&quot;,
    kernel_id=&quot;eki-6CBD12F2&quot;,
    key_name=nil,
    created_at=Wed Oct 19 15:19:16 UTC 2011,
    monitoring=false,
    placement_group=nil,
    platform=nil,
    product_codes=[],
    private_dns_name=&quot;euca-0-0-0-0.eucalyptus.internal&quot;,
    private_ip_address=nil,
    public_ip_address=nil,
    ramdisk_id=&quot;eri-A97113E4&quot;,
    reason=&quot;NORMAL:  -- []&quot;,
    root_device_name=nil,
    root_device_type=nil,
    state=&quot;pending&quot;,
    state_reason=nil,
    subnet_id=nil,
    tenancy=nil,
    tags=nil,
    user_data=nil
  &gt;
&gt;&gt; servers = Compute[:aws].servers  &lt;Fog::Compute::AWS::Servers
    filters={}
    [
      &lt;Fog::Compute::AWS::Server
        id=&quot;i-3D7A079C&quot;,
        ami_launch_index=0,
        availability_zone=&quot;open&quot;,
        block_device_mapping=[],
        client_token=nil,
        dns_name=&quot;euca-0-0-0-0.eucalyptus.eucasys.com&quot;,
        groups=[&quot;default&quot;],
        flavor_id=&quot;m1.small&quot;,
        image_id=&quot;emi-9ACB1363&quot;,
        kernel_id=&quot;eki-6CBD12F2&quot;,
        key_name=nil,
        created_at=Wed Oct 19 15:19:16 UTC 2011,
        monitoring=false,
        placement_group=nil,
        platform=nil,
        product_codes=[],
        private_dns_name=&quot;euca-0-0-0-0.eucalyptus.internal&quot;,
        private_ip_address=nil,
        public_ip_address=nil,
        ramdisk_id=&quot;eri-A97113E4&quot;,
        reason=&quot;NORMAL:  -- []&quot;,
        root_device_name=nil,
        root_device_type=nil,
        state=&quot;pending&quot;,
        state_reason={},
        subnet_id=nil,
        tenancy=nil,
        tags={},
        user_data=nil
      &gt;
    ]
  &gt;
</pre></p>
<p>You&#8217;ll notice that now the instance (which is in &#8220;pending&#8221; state) appears in the list of servers.<br />
I won&#8217;t show more here, but we&#8217;ve established basic connectivity to a Eucalyptus cloud. I hope this helps enable many existing and new applications to work with Eucalyptus!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/541/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/541/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/541/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/541/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/541/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/541/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/541/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/541/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=541&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/10/19/using-the-ruby-fog-library-to-connect-with-eucalyptus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>VMWare Fusion Error Recovery</title>
		<link>http://coderslike.us/2011/06/29/vmware-fusion-error-recovery/</link>
		<comments>http://coderslike.us/2011/06/29/vmware-fusion-error-recovery/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 17:03:48 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=536</guid>
		<description><![CDATA[I&#8217;m running VMWare Fusion on my MacBook Pro. I run an Ubuntu Maverick VM for some development work. One time, I tried restarting it from a suspended state and kept getting an error that &#8220;unexpected signal 10 received&#8221;. I was told to look for a log file, send it to VMWare support, etc, etc. I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=536&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m running VMWare Fusion on my MacBook Pro. I run an Ubuntu Maverick VM for some development work. One time, I tried restarting it from a suspended state and kept getting an error that &#8220;unexpected signal 10 received&#8221;. I was told to look for a log file, send it to VMWare support, etc, etc. I was unable to get the VM back up and had no option to boot the VM from scratch.</p>
<p>The answer turns out to be fairly simple. In my ~/Documents/Virtual Machines/ directory, there&#8217;s a directory for my VM. If I browse there in the finder, I can right-click and select &#8220;show package contents&#8221;. In the files contained in the VM directory, there is one ending in vmem and a directory ending in vmem.lck. I moved both of those to the trash and tried launching the VM again. This time, it said there was an error and would I like to preserve the state or not. I chose not to, and then I was able to boot the VM from scratch!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/536/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/536/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/536/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/536/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/536/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/536/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/536/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=536&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/06/29/vmware-fusion-error-recovery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>
	</item>
		<item>
		<title>How I got Amazon&#8217;s app store on my AT&amp;T phone</title>
		<link>http://coderslike.us/2011/03/22/how-i-got-amazons-app-store-on-my-att-phone/</link>
		<comments>http://coderslike.us/2011/03/22/how-i-got-amazons-app-store-on-my-att-phone/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 13:54:10 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app store]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=524</guid>
		<description><![CDATA[AT&#38;T doesn&#8217;t enable side-loading apps. They want you to go through their app marketplace. I&#8217;m sure it&#8217;s a control thing, but I&#8217;m a big boy, I can decide what I want to download and what I don&#8217;t. Since Amazon launched their Android App Store today, I thought get my phone (Samsung Captivate) enabled to run [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=524&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>AT&amp;T doesn&#8217;t enable side-loading apps. They want you to go through their app marketplace. I&#8217;m sure it&#8217;s a control thing, but I&#8217;m a big boy, I can decide what I want to download and what I don&#8217;t. Since Amazon launched their Android App Store today, I thought get my phone (Samsung Captivate) enabled to run other apps. Even as one <a href="http://carpeaqua.com/2011/03/22/8-easy-steps/">blog</a> points out that it takes 8 steps, I&#8217;ll show you here that it&#8217;s worse for some! I found instructions <a href="http://forum.androidcentral.com/t-captivate-rooting-roms-hacks/29467-install-blocked.html">here</a> (or <a href="http://forum.androidcentral.com/t-captivate-rooting-roms-hacks/23618-everything-you-need-know-un-cripple-your-captivate.html">here</a>) that were very helpful (follow the link on the 3rd post). In a nutshell, you root the phone, install busybox, copy the settings.db file to the sd card, move it to your computer and use an SQLite plugin to edit it, move it back to the phone and reboot. It was almost that simple. Rooting worked fine for me. I couldn&#8217;t get busybox installed. I even tried pulling it from another source and installing it manually. In any case, all you need from it is the &#8220;cp&#8221; (or copy) utility. I got around that using cat with redirect.</p>
<p>Once you get to the step where you&#8217;re supposed to copy files to the sd card, run these commands instead</p>
<p><pre class="brush: plain;">

cat /dbdata/databases/com.android.providers.settings/settings.db &gt;/sdcard/settings.db
cat /dbdata/databases/com.android.providers.settings/settings.db &gt;/sdcard/settings.db.backup
</pre></p>
<p>I found the SQLite plugin for Firefox easy to use. Once you copy the file back to the sd card, you&#8217;ll need to move it back to the system location, so use the same &#8220;cat&#8221; trick I used above.<br />
Once you reboot, you&#8217;ll be able to follow the <a href="http://www.amazon.com/gp/feature.html?ie=UTF8&amp;ref=mas_dp&amp;docId=1000626391">instructions</a> on the Amazon site to download their app store app (and it will work now).<br />
So, enjoy Angry Birds, or whatever other app of the day you grab. Oh, and we (the collective we) should probably buy a few apps to keep new apps coming!</p>
<p><a href="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-22-at-9-53-16-am.png"><img class="alignnone size-full wp-image-528" title="Screen shot 2011-03-22 at 9.53.16 AM" src="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-22-at-9-53-16-am.png?w=655&h=410" alt="" width="655" height="410" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/524/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=524&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/03/22/how-i-got-amazons-app-store-on-my-att-phone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>

		<media:content url="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-22-at-9-53-16-am.png" medium="image">
			<media:title type="html">Screen shot 2011-03-22 at 9.53.16 AM</media:title>
		</media:content>
	</item>
		<item>
		<title>Debugging a Firefox Plugin</title>
		<link>http://coderslike.us/2011/03/12/debugging-a-firefox-plugin/</link>
		<comments>http://coderslike.us/2011/03/12/debugging-a-firefox-plugin/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 05:10:47 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=518</guid>
		<description><![CDATA[This entry will be so brief, it will rival a tweet, but this is pure gold. If there is any one thing that I found helpful when I needed to debug a Firefox plugin, it was Chromebug. This is the debugger used to debug Firebug, so you know it has what it takes! (yes, I tried [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=518&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This entry will be so brief, it will rival a tweet, but this is pure gold.</p>
<p>If there is any one thing that I found helpful when I needed to debug a Firefox plugin, it was <a href="http://getfirebug.com/wiki/index.php/Chromebug_User_Guide">Chromebug</a>. This is the debugger used to debug Firebug, so you know it has what it takes! (yes, I tried Venkman. Fine for some things&#8230; just no this) So, get it, follow the instructions and be happy!</p>
<p><a href="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-11-at-9-12-24-pm.png"><img class="alignnone size-full wp-image-520" title="Screen shot 2011-03-11 at 9.12.24 PM" src="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-11-at-9-12-24-pm.png?w=655&h=421" alt="" width="655" height="421" /></a></p>
<p><a href="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-11-at-9-12-24-pm.png"></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/518/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/518/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=518&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/03/12/debugging-a-firefox-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>

		<media:content url="http://coderslikeus.files.wordpress.com/2011/03/screen-shot-2011-03-11-at-9-12-24-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-03-11 at 9.12.24 PM</media:title>
		</media:content>
	</item>
		<item>
		<title>Custom Stickers, easily</title>
		<link>http://coderslike.us/2011/02/04/custom-stickers-easily/</link>
		<comments>http://coderslike.us/2011/02/04/custom-stickers-easily/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 02:46:57 +0000</pubDate>
		<dc:creator>dkavanagh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[stickers]]></category>

		<guid isPermaLink="false">http://coderslike.us/?p=513</guid>
		<description><![CDATA[I thought I&#8217;d share an experience I had when trying to get some custom stickers done for the company I work for. In the past, I tried out cafepress.com and found the cost/sticker to be pretty high, though I was ordering small quantities. Last fall I attended a bar camp and one of the sponsors [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=513&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d share an experience I had when trying to get some <a href="http://www.stickermule.com/?ref_id=2388058601">custom stickers</a> done for the company I work for. In the past, I tried out cafepress.com and found the cost/sticker to be pretty high, though I was ordering small quantities. Last fall I attended a bar camp and one of the sponsors was <a href="http://www.stickermule.com/?ref_id=2388058601">StickerMule</a>. So, I thought I&#8217;d give them a try. I was pleasantly surprised to see the prices listed were all I had to pay. No shipping or tax. They even handled all of artwork and layout for free! On one of my stickers, I wasn&#8217;t happy with how the proof looked, and supplied some feedback. They got a new proof turned around in no time, which I was happy with! Here&#8217;s a picture of what I received, and I&#8217;m very happy with the results!</p>
<p><a href="http://coderslikeus.files.wordpress.com/2011/02/2011-02-03-18-33-13.jpg"><img class="alignnone size-medium wp-image-514" title="Eucalyptus Stickers" src="http://coderslikeus.files.wordpress.com/2011/02/2011-02-03-18-33-13.jpg?w=300&h=225" alt="" width="300" height="225" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/coderslikeus.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/coderslikeus.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/coderslikeus.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/coderslikeus.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/coderslikeus.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/coderslikeus.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/coderslikeus.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/coderslikeus.wordpress.com/513/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=coderslike.us&#038;blog=6290704&#038;post=513&#038;subd=coderslikeus&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://coderslike.us/2011/02/04/custom-stickers-easily/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/bd0b0382966354c72daa660969bca2cd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dkavanagh</media:title>
		</media:content>

		<media:content url="http://coderslikeus.files.wordpress.com/2011/02/2011-02-03-18-33-13.jpg?w=300" medium="image">
			<media:title type="html">Eucalyptus Stickers</media:title>
		</media:content>
	</item>
	</channel>
</rss>
