Mam VPC. Wewnątrz VPC tworzę podsieć. Chciałbym być tak ostrożny, jak to możliwe, i nie przechodzić dalej, dopóki podsieć nie jest naprawdę gotowa, ale jeśli robię podsieć.state, to zawsze mówi "oczekuje", mimo że była ona aktywna przez pewien czas.
>>> subnet = {}
>>> subnet["public"] = conn.create_subnet(vpcid, "10.2.0.0/24")
>>> subnet["public"].state
u"pending"
Próbowałem wykonać subnet.update (), ale to nie działa.
>>> subnet["public"].update()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: "Subnet" object has no attribute "update"
Jaki jest najlepszy sposób aktualizacji stanu obiektu podsieci?
Odpowiedzi:
2 dla odpowiedzi № 1Właśnie wpadłem na ten problem kilka minut temu. Chciałbym, aby była metoda update () na obiektach podsieci podobnych do obiektów VPC. Oto moje rozwiązanie:
#generic subnet creation method
def create_subnet(connection, vpc, cidr, name, test_mode=True):
print("Creating subnet with CIDR block", cidr)
subnet = connection.create_subnet(vpc.id, cidr_block=cidr, dry_run=test_mode)
#wait for subnet to become live
while subnet.state == "pending":
subnets = connection.get_all_subnets()
for item in subnets:
if item.id == subnet.id:
subnet.state = item.state
time.sleep(5)
#tag the subnet
subnet.add_tag("Name", name)
print("Done")
return subnet