def run(self, ovn, global_cfg): if self.config.pods_vip_ratio == 0: return ns = Namespace(ovn, 'ns_density_heavy') with Context('density_heavy_startup', 1, brief_report=True) as ctx: ports = ovn.provision_ports(self.config.n_startup, passive=True) ns.add_ports(ports) backends = [[ports[i]] for i in range(0, self.config.n_startup, self.config.pods_vip_ratio)] ovn.provision_vips_to_load_balancers(backends) with Context('density_heavy', (self.config.n_pods - self.config.n_startup) / self.config.pods_vip_ratio) as ctx: for _ in ctx: ports = ovn.provision_ports(self.config.pods_vip_ratio) ns.add_ports(ports) ovn.provision_vips_to_load_balancers([[ports[0]]]) ovn.ping_ports(ports) if not global_cfg.cleanup: return with Context('density_heavy_cleanup', brief_report=True) as ctx: ovn.unprovision_vips() ns.unprovision()
def run(self, ovn, global_cfg): ns = Namespace(ovn, 'ns_density_light') with Context('density_light_startup', 1, brief_report=True) as ctx: ports = ovn.provision_ports(self.config.n_startup, passive=True) ns.add_ports(ports) n_iterations = self.config.n_pods - self.config.n_startup with Context('density_light', n_iterations, test=self) as ctx: for i in ctx: ports = ovn.provision_ports(1) ns.add_ports(ports[0:1]) ovn.ping_ports(ports) if not global_cfg.cleanup: return with Context('density_light_cleanup', brief_report=True) as ctx: ns.unprovision()
def init(self, ovn): with Context(f'{self.name}_startup', brief_report=True) as _: self.ports = ovn.provision_ports(self.config.pods_ns_ratio * self.config.n_ns) for i in range(self.config.pods_ns_ratio * self.config.n_ns): self.all_labels.setdefault(i % self.config.n_labels, []).append(self.ports[i]) for i in range(self.config.n_ns): ns = Namespace(ovn, f'NS_{self.name}_{i}') ns.add_ports(self.ports[i * self.config.pods_ns_ratio:(i + 1) * self.config.pods_ns_ratio]) ns.default_deny() self.all_ns.append(ns)
def run(self, ovn, global_cfg): all_ns = [] with Context('cluster_density_startup', brief_report=True) as ctx: # create 4 legacy pods per iteration. ports = ovn.provision_ports(DENSITY_N_PODS * self.config.n_startup, passive=True) for i in range(self.config.n_startup): ns = Namespace(ovn, f'NS_density_{i}') ns.add_ports(ports[DENSITY_N_PODS * i:DENSITY_N_PODS * (i + 1)]) ns.create_load_balancer() ovn.provision_lb(ns.load_balancer) ns.provision_vips_to_load_balancers([ ports[i * DENSITY_N_PODS:i * DENSITY_N_PODS + 2], [ports[i * DENSITY_N_PODS + 2]], [ports[i * DENSITY_N_PODS + 3]] ]) all_ns.append(ns) with Context('cluster_density', (self.config.n_runs - self.config.n_startup) // self.batch_ratio, test=self) as ctx: for i in ctx: ns = Namespace(ovn, f'NS_density_{self.config.n_startup + i}') ns.create_load_balancer() ovn.provision_lb(ns.load_balancer) all_ns.append(ns) iter_ports = ovn.provision_ports(self.config.batch) for j in range(self.batch_ratio): # create 6 short lived "build" pods build_ports = iter_ports[j * DENSITY_N_TOT_PODS:j * DENSITY_N_TOT_PODS + DENSITY_N_BUILD_PODS] ns.add_ports(build_ports) ovn.ping_ports(build_ports) # create 4 legacy pods ports = iter_ports[j * DENSITY_N_TOT_PODS + DENSITY_N_BUILD_PODS:(j + 1) * DENSITY_N_TOT_PODS] ns.add_ports(ports) # add VIPs and backends to namespace load-balancer ns.provision_vips_to_load_balancers( [ports[0:2], ports[2:3], ports[3:4]]) ovn.ping_ports(ports) ns.unprovision_ports(build_ports) if not global_cfg.cleanup: return with Context('cluster_density_cleanup', brief_report=True) as ctx: for ns in all_ns: ns.unprovision()
def run(self, ovn, global_cfg): """ Run a multitenant network policy test, for example: for i in range(n_namespaces): create address set AS_ns_i create port group PG_ns_i if i < 200: n_pods = 1 # 200 pods elif i < 480: n_pods = 5 # 1400 pods elif i < 495: n_pods = 20 # 300 pods else: n_pods = 100 # 500 pods create n_pods add n_pods to AS_ns_i add n_pods to PG_ns_i create acls: to-lport, ip.src == $AS_ns_i && outport == @PG_ns_i, allow-related to-lport, ip.src == {ip1, ip2, ip3} && outport == @PG_ns_i, allow-related to-lport, ip.src == {ip1, ..., ip20} && outport == @PG_ns_i, allow-related """ external_ips1 = [ netaddr.IPAddress('42.42.42.1') + i for i in range(self.config.n_external_ips1) ] external_ips2 = [ netaddr.IPAddress('43.43.43.1') + i for i in range(self.config.n_external_ips2) ] all_ns = [] with Context('netpol_multitenant', self.config.n_namespaces, test=self) as ctx: for i in ctx: # Get the number of pods from the "highest" range that # includes i. ranges = self.config.ranges n_ports = next((r.n_pods for r in ranges if i >= r.start), 1) ns = Namespace(ovn, f'ns_netpol_multitenant_{i}') for _ in range(n_ports): worker = ovn.select_worker_for_port() for p in worker.provision_ports(ovn, 1): ns.add_ports([p]) ns.default_deny() ns.allow_within_namespace() ns.check_enforcing_internal() ns.allow_from_external(external_ips1) ns.allow_from_external(external_ips2, include_ext_gw=True) ns.check_enforcing_external() all_ns.append(ns) if not global_cfg.cleanup: return with Context('netpol_multitenant_cleanup', brief_report=True) as ctx: for ns in all_ns: ns.unprovision()
def run(self, ovn, global_cfg): all_ns = [] with Context('netpol_cross_ns_startup', brief_report=True) as ctx: ports = ovn.provision_ports(self.config.pods_ns_ratio * self.config.n_ns) for i in range(self.config.n_ns): ns = Namespace(ovn, f'NS_netpol_cross_ns_startup_{i}') ns.add_ports(ports[i * self.config.pods_ns_ratio:(i + 1) * self.config.pods_ns_ratio]) ns.default_deny() all_ns.append(ns) with Context('netpol_cross_ns', self.config.n_ns, test=self) as ctx: for i in ctx: ns = all_ns[i] ext_ns = all_ns[(i + 1) % self.config.n_ns] ns.allow_cross_namespace(ext_ns) ns.check_enforcing_cross_ns(ext_ns) if not global_cfg.cleanup: return with Context('netpol_cross_ns_cleanup', brief_report=True) as ctx: for ns in all_ns: ns.unprovision()
def run(self, ovn, global_cfg): all_ns = [] with Context('cluster_density_startup', 1, brief_report=True) as ctx: # create 4 legacy pods per iteration. ports = ovn.provision_ports(DENSITY_N_PODS * self.config.n_startup, passive=True) for i in range(self.config.n_startup): ns = Namespace(ovn, f'NS_{i}') ns.add_ports(ports[DENSITY_N_PODS * i:DENSITY_N_PODS * (i + 1)]) all_ns.append(ns) backends = [] backends.extend([ ports[i * DENSITY_N_PODS:i * DENSITY_N_PODS + 1] for i in range(self.config.n_startup) ]) backends.extend([[ports[i * DENSITY_N_PODS + 2]] for i in range(self.config.n_startup)]) backends.extend([[ports[i * DENSITY_N_PODS + 3]] for i in range(self.config.n_startup)]) ovn.provision_vips_to_load_balancers(backends) with Context('cluster_density', self.config.n_runs - self.config.n_startup) as ctx: for i in ctx: ns = Namespace(ovn, 'NS_{}'.format(self.config.n_startup + i)) all_ns.append(ns) # create 6 short lived "build" pods build_ports = ovn.provision_ports(DENSITY_N_BUILD_PODS) ns.add_ports(build_ports) ovn.ping_ports(build_ports) # create 4 legacy pods ports = ovn.provision_ports(DENSITY_N_PODS) ns.add_ports(ports) # add VIPs and backends to cluster load-balancer ovn.provision_vips_to_load_balancers( [ports[0:1], ports[2:3], ports[3:4]]) ovn.ping_ports(ports) ovn.unprovision_ports(build_ports) if not global_cfg.cleanup: return with Context('cluster_density_cleanup', brief_report=True) as ctx: for ns in all_ns: ns.unprovision()