コード例 #1
0
 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))
コード例 #2
0
ファイル: tasks.py プロジェクト: ChipWolf/authentik
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))
コード例 #3
0
ファイル: tasks.py プロジェクト: ChipWolf/authentik
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()
コード例 #4
0
 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))
コード例 #5
0
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