コード例 #1
0
    def get_desired_job_config(self):
        """
        Return the Aurora job configuration defined in Thrift API so that
        we can create a job via Aurora API.
        """

        # Add docker container
        container = Container(
            mesos=None,
            docker=DockerContainer(
                image=self.get_docker_image(),
                parameters=self.get_docker_params(),
            ),
        )

        host_limit = Constraint(
            name=self.cluster.constraint,
            constraint=TaskConstraint(limit=LimitConstraint(limit=1)),
        )

        task_config = TaskConfig(
            job=self.job_key,
            owner=Identity(user=AURORA_USER),
            isService=False,
            numCpus=self.cpu_limit,
            ramMb=self.mem_limit / MB,
            diskMb=self.disk_limit / MB,
            priority=0,
            maxTaskFailures=0,
            production=False,
            tier="preemptible",
            resources=set(
                [
                    Resource(numCpus=self.cpu_limit),
                    Resource(ramMb=self.mem_limit / MB),
                    Resource(diskMb=self.disk_limit / MB),
                ]
            ),
            contactEmail="*****@*****.**",
            executorConfig=self.get_executor_config(),
            container=container,
            constraints=set([host_limit]),
            requestedPorts=set(),
            mesosFetcherUris=set(),
            taskLinks={},
            metadata=set(),
        )

        job_config = JobConfiguration(
            key=self.job_key,
            owner=Identity(user=AURORA_USER),
            taskConfig=task_config,
            instanceCount=self.num_instances,
            cronSchedule=self.cron_schedule[1:],
        )
        return job_config
コード例 #2
0
    def get_desired_job_config(self):
        """
        Return the Aurora job configuration defined in Thrift API so that
        we can create a job via Aurora API.
        """

        # Add docker container
        container = Container(
            mesos=None,
            docker=DockerContainer(
                image=self.get_docker_image(),
                parameters=self.get_docker_params(),
            ),
        )

        host_limit = Constraint(
            name=self.cluster.constraint,
            constraint=TaskConstraint(limit=LimitConstraint(limit=1)),
        )

        # Set task metadata if presents in config
        if hasattr(self, 'metadata'):
            taskMetaData = set(
                [Metadata(key=k, value=v) for k, v in self.metadata.items()])
        else:
            taskMetaData = set()

        # Set task resources
        resources = set(
            [
                Resource(numCpus=self.cpu_limit),
                Resource(ramMb=self.mem_limit / MB),
                Resource(diskMb=self.disk_limit / MB),
            ]
        )
        if self.name == "apiserver":
            if self.http_port is None:
                resources.add(Resource(namedPort="http"))
            if self.grpc_port is None:
                resources.add(Resource(namedPort="grpc"))

        task_config = TaskConfig(
            job=self.job_key,
            owner=Identity(user=AURORA_USER),
            isService=True,
            numCpus=self.cpu_limit,
            ramMb=self.mem_limit / MB,
            diskMb=self.disk_limit / MB,
            priority=0,
            maxTaskFailures=0,
            production=False,
            tier="preemptible",
            resources=resources,
            contactEmail="*****@*****.**",
            executorConfig=self.get_executor_config(),
            container=container,
            constraints=set([host_limit]),
            requestedPorts=set(),
            mesosFetcherUris=set(),
            taskLinks={},
            metadata=taskMetaData,
        )

        job_config = JobConfiguration(
            key=self.job_key,
            owner=Identity(user=AURORA_USER),
            taskConfig=task_config,
            instanceCount=self.num_instances,
        )
        return job_config