def test_port_invalid(self): """Test port check""" controller = ProxyDockerController( Outpost.objects.filter(managed=MANAGED_OUTPOST).first(), self.integration ) container_no_ports = Container( attrs={"NetworkSettings": {"Ports": None}, "State": "running"} ) container_missing_port = Container( attrs={ "NetworkSettings": { "Ports": { "9443/tcp": [{"HostIp": "", "HostPort": "9443"}], } }, "State": "running", } ) container_mismatched_host = Container( attrs={ "NetworkSettings": { "Ports": { "9443/tcp": [{"HostIp": "", "HostPort": "123"}], } }, "State": "running", } ) with self.settings(TEST=False): self.assertFalse(controller._comp_ports(container_no_ports)) self.assertTrue(controller._comp_ports(container_missing_port)) self.assertTrue(controller._comp_ports(container_mismatched_host))
def outpost_controller(self: MonitoredTask, outpost_pk: str): """Create/update/monitor the deployment of an Outpost""" logs = [] outpost: Outpost = Outpost.objects.get(pk=outpost_pk) self.set_uid(slugify(outpost.name)) try: if not outpost.service_connection: return if outpost.type == OutpostType.PROXY: service_connection = outpost.service_connection if isinstance(service_connection, DockerServiceConnection): logs = ProxyDockerController( outpost, service_connection).up_with_logs() if isinstance(service_connection, KubernetesServiceConnection): logs = ProxyKubernetesController( outpost, service_connection).up_with_logs() LOGGER.debug( "---------------Outpost Controller logs starting----------------") for log in logs: LOGGER.debug(log) LOGGER.debug( "-----------------Outpost Controller logs end-------------------") except ControllerException as exc: self.set_status(TaskResult(TaskResultStatus.ERROR).with_error(exc)) else: self.set_status(TaskResult(TaskResultStatus.SUCCESSFUL, logs))
def outpost_pre_delete(outpost_pk: str): """Delete outpost objects before deleting the DB Object""" outpost = Outpost.objects.get(pk=outpost_pk) if outpost.type == OutpostType.PROXY: service_connection = outpost.service_connection if isinstance(service_connection, DockerServiceConnection): ProxyDockerController(outpost, service_connection).down() if isinstance(service_connection, KubernetesServiceConnection): ProxyKubernetesController(outpost, service_connection).down()
def test_port_valid(self): """Test port check""" controller = ProxyDockerController( Outpost.objects.filter(managed=MANAGED_OUTPOST).first(), self.integration ) container = Container( attrs={ "NetworkSettings": { "Ports": { "9000/tcp": [{"HostIp": "", "HostPort": "9000"}], "9443/tcp": [{"HostIp": "", "HostPort": "9443"}], } }, "State": "", } ) with self.settings(TEST=False): self.assertFalse(controller._comp_ports(container)) container.attrs["State"] = "running" self.assertFalse(controller._comp_ports(container))
def controller_for_outpost(outpost: Outpost) -> Optional[BaseController]: """Get a controller for the outpost, when a service connection is defined""" if not outpost.service_connection: return None service_connection = outpost.service_connection if outpost.type == OutpostType.PROXY: if isinstance(service_connection, DockerServiceConnection): return ProxyDockerController(outpost, service_connection) if isinstance(service_connection, KubernetesServiceConnection): return ProxyKubernetesController(outpost, service_connection) if outpost.type == OutpostType.LDAP: if isinstance(service_connection, DockerServiceConnection): return LDAPDockerController(outpost, service_connection) if isinstance(service_connection, KubernetesServiceConnection): return LDAPKubernetesController(outpost, service_connection) return None