Exemplo n.º 1
0
 def validate(self):
     if not self._values or len(self._values) == 0:
         raise ArenaException(
             ArenaErrorType,
             "failed to validate flag {},values are null".format(
                 self._flag))
     return True
Exemplo n.º 2
0
 def get_logs(self, logger: LoggerBuilder) -> None:
     cmds = list()
     cmds.append(ARENA_BINARY)
     cmds.append("serve")
     cmds.append("logs")
     cmds.append(self.get_owner())
     cmds.append("-T=" + self.get_owner_type().value[0])
     cmds.append("--version=" + self.get_owner_version())
     for opt in logger.get_args():
         cmds.append(opt)
     cmds.append("-i=" + self._name)
     kubeconfig = os.getenv("KUBECONFIG")
     if kubeconfig and kubeconfig != "":
         cmds.append("--config=" + kubeconfig)
     cmds.append("--namespace=" + self._namespace)
     arena_namespace = os.getenv("ARENA_NAMESPACE")
     if arena_namespace and arena_namespace != "":
         cmds.append("--arena-namespace=" + arena_namespace)
     try:
         status, stdout, stderr = Command(*cmds).run_with_communicate(
             logger.get_accepter())
         if status != 0:
             raise ArenaException(ArenaErrorType.LogsServingJobError,
                                  stdout + stderr)
     except ArenaException as e:
         raise e
Exemplo n.º 3
0
 def submit(self,job: TrainingJob) -> str:
     cmds = self.__generate_commands("serve")
     cmds.append(job.get_type().value[0])
     for opt in job.get_args():
         cmds.append(opt)
     cmds.append(job.get_command())
     try:
         status,stdout,stderr = Command(*cmds).run()
         if status != 0:
             err_message = "the job {} is already exist, please delete it first.".format(job.get_name())
             if stdout.find(err_message) != -1 or stderr.find(err_message) != -1:
                 raise ArenaException(ArenaErrorType.TrainingJobExistError,stdout + stderr)
             else:
                 raise ArenaException(ArenaErrorType.SubmitTrainingJobError,stdout + stderr)
         return stdout
     except ArenaException as e:
         raise e
Exemplo n.º 4
0
 def build(self) -> ServingJob:
     args = list()
     try:
         for field in self._options:
             if not isinstance(field,Field):
                 raise ArenaException(ArenaErrorType.Unknown,"the type of option {} is not Field".format(field))
             field.validate()
             for opt in field.options():
                 args.append(opt)
         return ServingJob(self._job_name,self._job_type,self._version,args,self._command)
     except ArenaException as e:
         raise e 
Exemplo n.º 5
0
 def traffic_router_split(self,job_name: str,job_type: ServingJobType,version_weights: Dict[str,int]):
     cmds = self.__generate_commands("serve","traffic-router-split")
     cmds.append("--name=" + job_name)
     for version,weight in version_weights.items():
         cmds.append("-v=" + version + ":" + str(weight))
     try:
         status,stdout,stderr = Command(*cmds).run()
         if status != 0:
             raise ArenaException(ArenaErrorType.TrafficRouterSplitServingJobError,stdout + stderr)
         return stdout
     except ArenaException as e:
         raise e
Exemplo n.º 6
0
 def _filter(self, node_type: NodeType, *node_names: List[str]) -> NodeSet:
     cmds = self.__generate_commands("top", "node", "-d", "-o", "json")
     if node_type != NodeType.AllNodeType and node_type != NodeType.UnknownNodeType:
         cmds.append("-m=" + node_type.value[0])
     try:
         status, stdout, stderr = Command(*cmds).run()
         if status != 0:
             raise ArenaException(ArenaErrorType.TopNodeError,
                                  stdout + stderr)
         data = json.loads(stdout)
         return build_nodes(data)
     except ArenaException as e:
         raise e
Exemplo n.º 7
0
 def delete(self, job_name: str, job_type: TrainingJobType) -> str:
     cmds = self.__generate_commands("delete")
     cmds.append(job_name)
     if job_type != TrainingJobType.AllTrainingJob and job_type != TrainingJobType.UnknownTrainingJob:
         cmds.append("--type=" + job_type.value)
     try:
         status, stdout, stderr = Command(*cmds).run()
         if status != 0:
             raise ArenaException(ArenaErrorType.DeleteTrainingJobError,
                                  stdout + stderr)
         return stdout
     except ArenaException as e:
         raise e
Exemplo n.º 8
0
 def prune(self, since: str, all_namespaces: bool) -> str:
     cmds = self.__generate_commands("prune")
     cmds.append("--since=" + since)
     if all_namespaces:
         cmds.append("-A")
     try:
         status, stdout, stderr = Command(*cmds).run()
         if status != 0:
             raise ArenaException(ArenaErrorType.PruneTrainingJobError,
                                  stdout + stderr)
         return stdout
     except ArenaException as e:
         raise e
Exemplo n.º 9
0
 def scaleout(self, job: TrainingJob) -> str:
     cmds = self.__generate_commands("scaleout")
     cmds.append(job.get_type().value)
     for opt in job.get_args():
         cmds.append(opt)
     cmds.append(job.get_command())
     try:
         status, stdout, stderr = Command(*cmds).run()
         if status != 0:
             raise ArenaException(ArenaErrorType.ScaleoutTrainingJobError,
                                  stdout + stderr)
         return stdout
     except ArenaException as e:
         raise e
Exemplo n.º 10
0
 def list(self,job_type: ServingJobType,all_namespaces: bool) -> List[TrainingJobInfo]:
     def convert(json_object):
         job_infos = list()
         for obj in json_object:
             job_infos.append(generate_serving_job_info(obj))
         return job_infos
     cmds = self.__generate_commands("list")
     if job_type != ServingJobType.AllServingJob and job_type != ServingJobType.UnknownServingJob:
         cmds.append("--type=" + job_type.value)
     if all_namespaces:
         cmds.append("-A")
     cmds.append("-o")
     cmds.append("json")
     try:
         status,stdout,stderr = Command(*cmds).run()
         if status != 0:
             raise ArenaException(ArenaErrorType.ListServingJobError,stdout + stderr)
         return json.loads(stdout,object_hook=convert)
     except ArenaException as e:
         raise e
Exemplo n.º 11
0
 def get(self,job_name: str,job_type: ServingJobType,version: str) -> TrainingJobInfo:
     cmds = self.__generate_commands("serve","get")
     cmds.append(job_name)
     if job_type != ServingJobType.AllServingJob and job_type != ServingJobType.UnknownServingJob:
         cmds.append("--type=" + job_type.value[0])
     if version != "":
         cmds.append("--version=" + version)
     cmds.append("-o")
     cmds.append("json")
     try:
         status,stdout,stderr = Command(*cmds).run()
         if status != 0:
             err_message = "Not found serving job {}".format(job_name)
             if stdout.find(err_message) != -1 or stderr.find(err_message) != -1:
                 return None
             else:
                 raise ArenaException(ArenaErrorType.GetServingJobError,stdout + stderr)
         data = json.loads(stdout)
         return generate_serving_job_info(data)
     except ArenaException as e:
         raise e
Exemplo n.º 12
0
 def get(self, job_name: str, job_type: TrainingJobType) -> TrainingJobInfo:
     cmds = self.__generate_commands("get")
     cmds.append(job_name)
     if job_type != TrainingJobType.AllTrainingJob and job_type != TrainingJobType.UnknownTrainingJob:
         cmds.append("--type=" + job_type.value)
     cmds.append("-o")
     cmds.append("json")
     try:
         status, stdout, stderr = Command(*cmds).run()
         if status != 0:
             err_message = "Not found training job {} in namespace {},please use 'arena submit' to create it.".format(
                 job_name, self.namespace)
             if stdout.find(err_message) != -1 or stderr.find(
                     err_message) != -1:
                 return None
             else:
                 raise ArenaException(ArenaErrorType.GetTrainingJobError,
                                      stdout + stderr)
         data = json.loads(stdout)
         return generate_training_job_info(data)
     except ArenaException as e:
         raise e
Exemplo n.º 13
0
 def validate(self):
     if not self._flag or self._value == "":
         raise ArenaException(
             ArenaErrorType.ValidateArgsError,
             "failed to validate flag {},value is null".format(self._flag))
     return True