blob: 3de3555984b4f2c780c44661674578c3bdc741bc [file]
import libcloud.security
from libcloud.common.nttcis import NttCisPort, NttCisIpAddress, NttCisFirewallAddress
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
# Get nttcis driver
libcloud.security.VERIFY_SSL_CERT = True
cls = get_driver(Provider.NTTCIS)
driver = cls("myusername", "mypassword", region="eu")
# Get location
location = driver.ex_get_location_by_id(id="EU6")
# Get network domain by location
networkDomainName = "sdk_test_1"
network_domains = driver.ex_list_network_domains(location=location.id)
my_network_domain = [d for d in network_domains if d.name == networkDomainName][0]
# Create an instance of NttCisFirewallAddress for source
source_firewall_address = NttCisFirewallAddress(any_ip="ANY")
# Create an instance of NttCisIpAddress for an Address List for the destination
address_list_name = "sdk_test_address_list"
description = "A test address list"
ip_version = "IPV4"
# An optional prefix list can be specified as a named argument, prefix_size=
address_obj = [NttCisIpAddress("10.2.0.1", end="10.2.0.11")]
result = driver.ex_create_ip_address_list(
my_network_domain.id, address_list_name, description, ip_version, address_obj
)
try:
assert result is True
except Exception:
raise RuntimeError("Something went wrong in address list creation.")
else:
addr_list = driver.ex_list_ip_address_list(my_network_domain.id)
addr_list = [al for al in addr_list if al.name == address_list_name][0]
# Instead of a single port or list of ports, create a port
# list for the destianation
port_list_name = "sdk_test_port_list"
description = "A test port list"
# rerquires an instance of NttCisPort object
ports = [NttCisPort(begin="8000", end="8080")]
result = driver.ex_create_portlist(my_network_domain.id, port_list_name, description, ports)
try:
assert result is True
except Exception:
raise RuntimeError("Something went wrong in address list creation.")
else:
port_list = driver.ex_list_portlist(my_network_domain.id)
port_list = [pl for pl in port_list if pl.name == port_list_name][0]
# Create an instance of NttCisFirewallAddress for destination
dest_firewall_address = NttCisFirewallAddress(
address_list_id=addr_list.id, port_list_id=port_list.id
)
# Finally create firewall rule
rule = driver.ex_create_firewall_rule(
my_network_domain.id,
"sdk_test_firewall_rule",
"ACCEPT_DECISIVELY",
"IPV4",
"TCP",
source_firewall_address,
dest_firewall_address,
"LAST",
)
print(rule)