def create_cluster(args): """Create a cluster and start all its nodes. """ conf = config.Config() if args.name in conf.clusters: logging.error("Cluster `%s` already exists", args.name) return 1 network = ipaddress.ip_network(u"%s" % (args.flannel_network,)) subnet_length = args.flannel_subnet_length subnet_min = ipaddress.ip_network(u"%s/%d" % (args.flannel_subnet_min, subnet_length)) subnet_max = ipaddress.ip_network(u"%s/%d" % (args.flannel_subnet_max, subnet_length)) services_ip_range = ipaddress.ip_network(u"%s" % (args.services_ip_range,)) dns_service_ip = ipaddress.ip_address(u"%s" % (args.dns_service_ip,)) kubernetes_service_ip = ipaddress.ip_address(u"%s" % (args.kubernetes_service_ip,)) for net in (subnet_min, subnet_max): if net.prefixlen != subnet_length: logging.error("Network %s is not a /%d network", net, subnet_length) return 1 if not net.subnet_of(network): logging.error("Network %s is not a subnet of %s", net, network) return 1 if services_ip_range.overlaps(network): logging.error("Service IP range %s overlaps with network %s", services_ip_range, network) return 1 if dns_service_ip not in services_ip_range: logging.error("DNS service IP address %s not in service IP range %s", dns_service_ip, services_ip_range) return 1 if kubernetes_service_ip not in services_ip_range: logging.error( "Kubernetes API IP address %s not in service IP range %s", kubernetes_service_ip, services_ip_range ) return 1 provider = get_provider(args.provider) core.create_cluster( args.name, args.channel, args.num_etcd, args.size_etcd, args.num_workers, args.size_workers, provider, args.location, network, subnet_length, subnet_min, subnet_max, services_ip_range, dns_service_ip, kubernetes_service_ip, conf, ) cluster_up(args) return provision_cluster(args)
def create_cluster(args): """Create a cluster and start all its nodes. """ conf = config.Config() if args.name in conf.clusters: logging.error("Cluster `%s` already exists", args.name) return 1 network = ipaddress.ip_network(u"%s" % (args.flannel_network, )) subnet_length = args.flannel_subnet_length subnet_min = ipaddress.ip_network(u"%s/%d" % (args.flannel_subnet_min, subnet_length)) subnet_max = ipaddress.ip_network(u"%s/%d" % (args.flannel_subnet_max, subnet_length)) services_ip_range = ipaddress.ip_network(u"%s" % (args.services_ip_range, )) dns_service_ip = ipaddress.ip_address(u"%s" % (args.dns_service_ip, )) kubernetes_service_ip = ipaddress.ip_address( u"%s" % (args.kubernetes_service_ip, )) for net in (subnet_min, subnet_max): if net.prefixlen != subnet_length: logging.error("Network %s is not a /%d network", net, subnet_length) return 1 if not net.subnet_of(network): logging.error("Network %s is not a subnet of %s", net, network) return 1 if services_ip_range.overlaps(network): logging.error("Service IP range %s overlaps with network %s", services_ip_range, network) return 1 if dns_service_ip not in services_ip_range: logging.error("DNS service IP address %s not in service IP range %s", dns_service_ip, services_ip_range) return 1 if kubernetes_service_ip not in services_ip_range: logging.error( "Kubernetes API IP address %s not in service IP range %s", kubernetes_service_ip, services_ip_range) return 1 provider = get_provider(args.provider) core.create_cluster(args.name, args.channel, args.num_etcd, args.size_etcd, args.num_workers, args.size_workers, provider, args.location, network, subnet_length, subnet_min, subnet_max, services_ip_range, dns_service_ip, kubernetes_service_ip, conf) cluster_up(args) return provision_cluster(args)
def mock_cluster(scope="function"): home = tempfile.mkdtemp(prefix="container-cluster-test-") conf = Config(home) provider = providers.get_provider("mockprovider") cluster = core.create_cluster("test-cluster1", "alpha", 3, "512mb", 4, "1gb", provider, "lon1", ipaddress.ip_network(u"172.16.0.0/16"), 24, ipaddress.ip_network(u"172.16.1.0"), ipaddress.ip_network(u"172.16.254.0"), ipaddress.ip_network(u"172.17.0.0/24"), ipaddress.ip_address(u"172.17.0.10"), ipaddress.ip_address(u"172.17.0.1"), conf) with cluster.provider.ssh_server: yield cluster