<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small">Hi Peter,</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small">Could you please explain what i am doing wrong? I did inspected the "get_all_security_groups()" object using dir and i do need the get_data function for this to work...as i have to parse the output...just getting the rule and grants does not work...as it comes with extra verbiage that i do NOT need in my dictionary...see below...</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small"><br></div><div class="gmail_default" style=""><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> for sg in sgs:</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> for rule in sg.rules:</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> print sg, <a href="http://sg.id">sg.id</a>, rule, rule.grants</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"><br></font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> </font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:-1(None-None) [sg-e632d982-995635159130]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:tcp(22-22) [<a href="http://67.184.225.222/32">67.184.225.222/32</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:tcp(1024-65535) [<a href="http://10.0.2.10/32">10.0.2.10/32</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:tcp(80-80) [<a href="http://24.12.30.198/32">24.12.30.198/32</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:udp(138-138) [<a href="http://10.0.2.10/32">10.0.2.10/32</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:udp(53-53) [<a href="http://24.12.30.198/32">24.12.30.198/32</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:tcp(30015-30015) [<a href="http://0.0.0.0/0">0.0.0.0/0</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">SecurityGroup:wordpress-app-SG sg-99c4befc IPPermissions:icmp(-1--1) [<a href="http://10.0.2.10/32">10.0.2.10/32</a>]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> </font></div></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small">i was able to create a list(and nested dictionary) using below... i am open to making this better if there is a way...</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small">And please accept my apology(in case i am not following certain things) as i am very new to python... </div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:x-small"><br></div><div class="gmail_default" style=""><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> mylist = []</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> </font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> for sg in sgs:</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> for rule in sg.rules:</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> st = sg, <a href="http://sg.id">sg.id</a>, "inbound:", rule, " source:", rule.grants</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> # without the below, we get a comman(,)</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> s = str(st).replace(","," ")</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> #print s</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> jt = get_data(s)</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> mylist.append(jt)</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"><br></font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1"> </font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> mylist</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">[{'cidr': 'sg-e632d982-995635159130', 'port': 'None', 'proto': '1'}, {'cidr': '<a href="http://67.184.225.222/32">67.184.225.222/32</a>', 'port': '22', 'proto': 'tcp'}, {'cidr': '<a href="http://10.0.2.10/32">10.0.2.10/32</a>', 'port': '1024', 'proto': 'tcp'}, {'cidr': '<a href="http://24.12.30.198/32">24.12.30.198/32</a>', 'port': '80', 'proto': 'tcp'}, {'cidr': '<a href="http://10.0.2.10/32">10.0.2.10/32</a>', 'port': '138', 'proto': 'udp'}, {'cidr': '<a href="http://24.12.30.198/32">24.12.30.198/32</a>', 'port': '53', 'proto': 'udp'}, {'cidr': '<a href="http://0.0.0.0/0">0.0.0.0/0</a>', 'port': '30015', 'proto': 'tcp'}, {'cidr': '<a href="http://10.0.2.10/32">10.0.2.10/32</a>', 'port': '', 'proto': 'icmp'}]</font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> </font></div><div class="gmail_default" style=""><font face="courier new, monospace" size="1">>>> </font></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 22, 2015 at 12:41 PM, Peter Otten <span dir="ltr"><<a href="mailto:__peter__@web.de" target="_blank">__peter__@web.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">max scalf wrote:<br>
<br>
> I was able to solve the above problem i listed with the following...please<br>
> let me know if that is the correct way of doing this...or i am way off?<br>
><br>
> >>> for sg in sgs:<br>
> for rule in sg.rules:<br>
</span>> st = sg, <a href="http://sg.id" rel="noreferrer" target="_blank">sg.id</a>, "inbound:", rule, " source:", rule.grants<br>
<span class="">> s = str(st).replace(","," ")<br>
> #print s<br>
> get_data(s)<br>
><br>
><br>
> {'cidr': 'sg-e632d982-995635159130', 'port': 'None', 'proto': '1'}<br>
</span>> {'cidr': '<a href="http://67.184.225.222/32" rel="noreferrer" target="_blank">67.184.225.222/32</a>', 'port': '22', 'proto': 'tcp'}<br>
> {'cidr': '<a href="http://10.0.2.10/32" rel="noreferrer" target="_blank">10.0.2.10/32</a>', 'port': '1024', 'proto': 'tcp'}<br>
> {'cidr': '<a href="http://24.12.30.198/32" rel="noreferrer" target="_blank">24.12.30.198/32</a>', 'port': '80', 'proto': 'tcp'}<br>
> {'cidr': '<a href="http://10.0.2.10/32" rel="noreferrer" target="_blank">10.0.2.10/32</a>', 'port': '138', 'proto': 'udp'}<br>
> {'cidr': '<a href="http://24.12.30.198/32" rel="noreferrer" target="_blank">24.12.30.198/32</a>', 'port': '53', 'proto': 'udp'}<br>
> {'cidr': '<a href="http://0.0.0.0/0" rel="noreferrer" target="_blank">0.0.0.0/0</a>', 'port': '30015', 'proto': 'tcp'}<br>
> {'cidr': '<a href="http://10.0.2.10/32" rel="noreferrer" target="_blank">10.0.2.10/32</a>', 'port': '', 'proto': 'icmp'}<br>
<br>
As Chris hinted -- that's the wrong approach. You should instead look at the<br>
attributes. What does<br>
<br>
for sg in sgs:<br>
print "attributes of sg", dir(sg)<br>
for rule in sg.rules:<br>
print "attributes of rule", dir(rule)<br>
break<br>
break<br>
<br>
print? You should be able to determine the names of the interesting stuff<br>
from that. If not, try again with vars() instead of dir(), or, the horror!,<br>
see if you can find some documentation.<br>
<br>
Then build the dicts from these attributes, e. g.<br>
<br>
result = []<br>
<span class="">for sg in sgs:<br>
for rule in sg.rules:<br>
</span> result.append(dict(cidr=sg.foo, port=rule.bar, proto=rule.baz))<br>
print result<br>
<br>
It should be obvious that foo, bar, baz are not the correct attribute names,<br>
they are placeholders to convey the idea.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
<a href="https://mail.python.org/mailman/listinfo/python-list" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-list</a><br>
</font></span></blockquote></div><br></div>