示例#1
0
def GetJobDetail(jobId):
    job = None
    dataHandler = DataHandler()
    jobs =  dataHandler.GetJob(jobId=jobId)
    if len(jobs) == 1:
        job = jobs[0]
        job["log"] = ""
        #jobParams = json.loads(base64.b64decode(job["jobMeta"]))
        #jobPath,workPath,dataPath = GetStoragePath(jobParams["jobPath"],jobParams["workPath"],jobParams["dataPath"])
        #localJobPath = os.path.join(config["storage-mount-path"],jobPath)
        #logPath = os.path.join(localJobPath,"joblog.txt")
        #print logPath
        #if os.path.isfile(logPath):
        #    with open(logPath, 'r') as f:
        #        log = f.read()
        #        job["log"] = log
        #    f.close()
        if "jobDescription" in job:
            job.pop("jobDescription",None)
        try:
            log = dataHandler.GetJobTextField(jobId,"jobLog")
            try:
                if isBase64(log):
                    log = base64.b64decode(log)
            except Exception:
                pass                       
            if log is not None:
                job["log"] = log
        except:
            job["log"] = "fail-to-get-logs"
    dataHandler.Close()
    return job
def tune_lr_using_10_fold():
    dh = DataHandler('data/train-set-feature-engineered.csv', 'prediction_label')
    headers, train_features, train_prediction_labels = dh.get_numeric_data_set()

    #train_features = dh.get_k_best_features(len(train_features[0]), train_features, train_prediction_labels)
    data_sets = dh.get_cross_validation_data_sets(10, train_features, train_prediction_labels)

    accuracy = []
    for data_set_number in data_sets:
        data_set = data_sets.get(data_set_number)
        training_set = data_set[0]
        tuning_set = data_set[1]
        train_features = training_set["data_points"]
        train_prediction_labels = training_set["labels"]

        # Feature selection
        train_features, selected_features = dh.get_k_best_features(len(train_features[0]), train_features, train_prediction_labels)

        test_features = tuning_set["data_points"]
        test_prediction_labels = tuning_set["labels"]

        # Feature selection
        test_features = dh.get_new_feature_vec(test_features, selected_features)

        lr = LogisticRegression(train_features, train_prediction_labels, test_features, test_prediction_labels, 0.3)

        eval_metrics = EvaluationMetrics(lr, test_features, test_prediction_labels)
        eval = eval_metrics.evaluate()
        accuracy.append(eval['accuracy'])


    average_accuracy = sum(accuracy) / len(accuracy)
    print average_accuracy
示例#3
0
def Run():

    while True:

        try:
            config["racks"] = k8sUtils.get_node_labels("rack")
            config["skus"] = k8sUtils.get_node_labels("sku")
        except Exception as e:
            print e

        try:
            dataHandler = DataHandler()
            pendingJobs = dataHandler.GetPendingJobs()
            printlog("updating status for %d jobs" % len(pendingJobs))
            for job in pendingJobs:
                try:
                    print "Processing job: %s, status: %s" % (job["jobId"],
                                                              job["jobStatus"])
                    if job["jobStatus"] == "queued":
                        SubmitJob(job)
                    elif job["jobStatus"] == "killing":
                        KillJob(job)
                    elif job["jobStatus"] == "scheduling" or job[
                            "jobStatus"] == "running":
                        UpdateJobStatus(job)
                    elif job["jobStatus"] == "unapproved":
                        AutoApproveJob(job)
                except Exception as e:
                    print e
        except Exception as e:
            print e

        time.sleep(1)
示例#4
0
def KillJob(job, desiredState="killed"):
    dataHandler = DataHandler()
    result, detail = k8sUtils.GetJobStatus(job["jobId"])
    dataHandler.UpdateJobTextField(job["jobId"], "jobStatusDetail",
                                   base64.b64encode(json.dumps(detail)))
    logging.info("Killing job %s, with status %s, %s" %
                 (job["jobId"], result, detail))
    if "jobDescriptionPath" in job and job["jobDescriptionPath"] is not None:
        jobDescriptionPath = os.path.join(config["storage-mount-path"],
                                          job["jobDescriptionPath"])
        if os.path.isfile(jobDescriptionPath):
            if k8sUtils.kubectl_delete(jobDescriptionPath) == 0:
                dataHandler.UpdateJobTextField(job["jobId"], "jobStatus",
                                               desiredState)
                return True
            else:
                dataHandler.UpdateJobTextField(
                    job["jobId"], "errorMsg",
                    "Cannot delete job from Kubernetes Cluster!")
    else:
        dataHandler.UpdateJobTextField(job["jobId"], "errorMsg",
                                       "Cannot find job description file!")

    dataHandler.UpdateJobTextField(job["jobId"], "jobStatus", "error")
    return False
def ApproveJob(job):
    logging.info("start to Approve job...")

    dataHandler = DataHandler()
    dataHandler.ApproveJob(job["jobId"])
    dataHandler.Close()
    return True
示例#6
0
def RunCommand(command):
    dataHandler = DataHandler()
    k8sUtils.kubectl_exec("exec %s %s" %
                          (command["jobId"], command["command"]))
    dataHandler.FinishCommand(command["id"])
    dataHandler.Close()
    return True
示例#7
0
def GetJobLog(userName, jobId):
    dataHandler = DataHandler()
    jobs = dataHandler.GetJob(jobId=jobId)
    if len(jobs) == 1:
        if jobs[0]["userName"] == userName or AuthorizationManager.HasAccess(
                userName, ResourceType.VC, jobs[0]["vcName"],
                Permission.Collaborator):
            try:
                log = dataHandler.GetJobTextField(jobId, "jobLog")
                try:
                    if isBase64(log):
                        log = base64.b64decode(log)
                except Exception:
                    pass
                if log is not None:
                    return {
                        "log": log,
                        "cursor": None,
                    }
            except:
                pass
    return {
        "log": {},
        "cursor": None,
    }
示例#8
0
def GetJobList(userName, vcName, jobOwner, num=None):
    try:
        dataHandler = DataHandler()
        jobs = []
        hasAccessOnAllJobs = False

        if AuthorizationManager.HasAccess(userName, ResourceType.VC, vcName,
                                          Permission.Collaborator):
            hasAccessOnAllJobs = True

        if jobOwner != "all" or not hasAccessOnAllJobs:
            jobs = jobs + GetUserPendingJobs(userName, vcName)
            jobs = jobs + dataHandler.GetJobList(
                userName, vcName, num,
                "running,queued,scheduling,unapproved,pausing,paused",
                ("<>", "and"))
        else:
            jobs = GetUserPendingJobs(jobOwner, vcName)

        for job in jobs:
            job.pop('jobMeta', None)
        dataHandler.Close()
        return jobs
    except Exception as e:
        logger.error('Exception: %s', str(e))
        logger.warn("Fail to get job list for user %s, return empty list",
                    userName)
        return []
示例#9
0
 def __init__(self, type='Chrome', db_ip=DATABASE_IP, db_user=DATABASE_ACCOUNT, db_pwd=DATABASE_PWD,
              db_name=DATABASE_NAME, open_browser=False):
     self.browser_type = type
     self.db_ip = db_ip
     self.db_user = db_user
     self.db_pwd = db_pwd
     self.db_name = db_name
     self.db = None
     self.connected = False
     self.browsers = []
     user = getpass.getuser()
     if type == 'Chrome':
         if sys.platform == 'darwin' and user == 'sunhua':
             self.exe_path = '/Users/sunhua/desktop/chromedriver'
         elif sys.platform == 'win32':
             self.exe_path = 'win32/chromedriver.exe'
         elif sys.platform == 'darwin':
             self.exe_path = 'mac/chromedriver'
     elif type == 'Firefox':
         if sys.platform == 'darwin' and user == 'sunhua':
             self.exe_path = '/Users/sunhua/desktop/geckodriver'
         elif sys.platform == 'win32':
             self.exe_path = 'win32/geckodriver.exe'
         elif sys.platform == 'darwin':
             self.exe_path = 'mac/geckodriver'
     self.dat = DataHandler()
     if open_browser:
         self.open_browser()
示例#10
0
def GetJobStatus(jobId):
    result = None
    dataHandler = DataHandler()
    result = dataHandler.GetJobTextFields(jobId,
                                          ["jobStatus", "jobTime", "errorMsg"])
    dataHandler.Close()
    return result
示例#11
0
    def GetResourceAcl(resource):
        try:
            with acl_cache_lock:
                return acl_cache[resourceKeyPrefix + resource]
        except KeyError:
            pass

        dataHandler = DataHandler()
        ret = []
        try:
            ret = dataHandler.GetResourceAcl(resource)

            identities = {}
            for ace in ret:
                identityKey = identityKeyPrefix + ace["identityName"]
                if identityKey not in identities:
                    identities[identityKey] = []
                identities[identityKey].append(ace)

            with acl_cache_lock:
                acl_cache[resourceKeyPrefix + resource] = ret
                acl_cache.update(identities)
        except Exception as e:
            logger.error("Get resoure acl error for resource: %s, ex: %s",
                         resource, str(e))
        finally:
            dataHandler.Close()
        return ret
示例#12
0
    def UpdateAce(identityName, resource, permissions, isDeny):
        dataHandler = DataHandler()
        ret = False
        try:
            identityId = 0
            if identityName.isdigit():
                identityId = int(identityName)
            else:
                identityId = IdentityManager.GetIdentityInfoFromDB(
                    identityName)["uid"]
                if identityId == INVALID_ID:
                    info = IdentityManager.GetIdentityInfoFromAD(identityName)
                    IdentityManager.UpdateIdentityInfo(identityName,
                                                       info["uid"],
                                                       info["gid"],
                                                       info["groups"])
                    identityId = info["uid"]
            ret = dataHandler.UpdateAce(identityName, identityId, resource,
                                        permissions, isDeny)

            with acl_cache_lock:
                acl_cache.pop(resourceKeyPrefix + resource, None)
                acl_cache.pop(identityKeyPrefix + identityName, None)
        except Exception as e:
            logger.warn("Fail to Update Ace for user %s, ex: %s", identityName,
                        str(e))
        finally:
            dataHandler.Close()
        return ret
示例#13
0
def ListStorages(userName, vcName):
    ret = []
    dataHandler = DataHandler()
    if AuthorizationManager.HasAccess(userName, ResourceType.VC, vcName, Permission.User):
        ret = dataHandler.ListStorages(vcName)
    dataHandler.Close()
    return ret
示例#14
0
def main():

    LOG = setupLogger()
    LOG.info('STARTING')

    # wait until we should start. Make this into a class or method?
    # while now()>endCheckTime() or now()<startCheckTime():
    #    LOG.info('Pinging every 120 seconds to check if the person should be asleep.')
    #    stallAction(120)

    key_getter = TokenGetter(os.path.join(getPath(), 'tokens.txt'))
    api_handler = APIHandler(FitbitURL, OutFile, key_getter)
    data_handler = DataHandler()

    #Make the API call
    APIResponse = api_handler.cancelIfAPICallBad()
    sleep_checker = SleepChecker(OutFile)
    LOG.info('Polling until the user is asleep.')
    while sleep_checker.isAwake():
        stallAction(600)  #Check every 10 minutes if the user is asleep.
        APIResponse = api_handler.cancelIfAPICallBad()
        sleeping, start_time = data_handler.getSleepStartTime(APIResponse)

    #The user is now asleep.

    user = '******'  # Temporary username being used.

    LOG.info('User ' + user + ' started sleeping at ' + str(start_time) +
             ' today.')
    wake_up = WakeUpCaller()
    wake_up.callWake(start_time)
示例#15
0
def set_user_directory():
    dataHandler = DataHandler()
    users = dataHandler.GetUsers()
    for username, userid in users:
        if "@" in username:
            username = username.split("@")[0]
        if "/" in username:
            username = username.split("/")[1]
        if "\\" in username:
            username = username.split("\\")[1]
        userpath = os.path.join(config["storage-mount-path"],
                                "work/" + username)
        if not os.path.exists(userpath):
            logging.info("Found a new user %s" % username)
            logging.info("Creating home directory %s for user %s" %
                         (userpath, username))
            os.system("mkdir -p " + userpath)
            os.system("chown -R " + userid + ":" + "500000513 " + userpath)

        sshkeypath = os.path.join(userpath, ".ssh/id_rsa")
        if not os.path.exists(sshkeypath):
            logging.info("Creating sshkey for user %s" % (username))
            os.system("mkdir -p " + os.path.dirname(sshkeypath))
            os.system("ssh-keygen -t rsa -b 4096 -f %s -P ''" % sshkeypath)
            os.system("chown -R " + userid + ":" + "500000513 " + userpath)
            os.system("chmod 700 -R " + os.path.dirname(sshkeypath))
示例#16
0
文件: main.py 项目: bhnn/Tinynet
 def _input_fn(mode=None, params=None):
     """Loads the dataset, decodes, reshapes and preprocesses it for use. Computations performed on CPU."""
     with tf.device('/cpu:0'):
         if mode == 'train':
             dataset = DataHandler(mode, "train",
                                   params).prepare_for_train()
         elif mode == 'eval':
             dataset = DataHandler(mode, "validation",
                                   params).prepare_for_eval(
                                       params.eval_batch_size)
         elif mode == 'test':
             dataset = DataHandler(mode, "test", params).prepare_for_eval(
                 params.eval_batch_size)
         else:
             raise ValueError('_input_fn received invalid MODE')
         return dataset.make_one_shot_iterator().get_next()
示例#17
0
def update_job_logs():
    while True:
        try:
            dataHandler = DataHandler()
            pendingJobs = dataHandler.GetPendingJobs()
            for job in pendingJobs:
                try:
                    if job["jobStatus"] == "running":
                        logging.info("updating job logs for job %s" %
                                     job["jobId"])
                        jobParams = json.loads(
                            base64.b64decode(job["jobParams"]))
                        jobPath, workPath, dataPath = GetStoragePath(
                            jobParams["jobPath"], jobParams["workPath"],
                            jobParams["dataPath"])
                        localJobPath = os.path.join(
                            config["storage-mount-path"], jobPath)
                        logPath = os.path.join(localJobPath, "logs/joblog.txt")

                        extract_job_log(job["jobId"], logPath,
                                        jobParams["userId"])
                except Exception as e:
                    logging.error(e)
        except Exception as e:
            logging.error(e)

        time.sleep(1)
示例#18
0
    def getWakeTime(self):
        user = self.getUser()
        FitbitURL = "https://api.fitbit.com/1/user/" + user + "/sleep/date/" + today_as_dt + ".json"
        LOG = setupLogger()
        LOG.info('STARTING')
        key_getter_location = os.path.join(getPath(), 'Tokens.txt')
        print key_getter_location

        key_getter = TokenGetter(key_getter_location)
        api_handler = APIHandler(FitbitURL, OutFile, key_getter)
        data_handler = DataHandler()

        #Make the API call
        APIResponse = api_handler.cancelIfAPICallBad()
        sleep_checker = SleepChecker(OutFile)
        LOG.info("Checking if the user is asleep.")
        if sleep_checker.isAwake():
            LOG.info("User is still awake.")
            return '06:00:00'
        else:
            APIResponse = api_handler.cancelIfAPICallBad()
            sleeping, start_time = data_handler.getSleepStartTime(APIResponse)

        #Sleeping is true now.
        LOG.info('You started sleeping at ' + str(start_time) + ' today.')
        wake_up = WakeUpCaller()
        return wake_up.calculateWakeTime(start_time)
示例#19
0
    def _HasAccess(identity_name, resource_acl_path, permissions):
        start_time = time.time()
        requested_access = "%s;%s;%s" % (str(identity_name), resource_acl_path,
                                         str(permissions))

        value = resource_acl_cache.get(requested_access)
        if value is not None:
            logger.info('[cached] Yes for %s in time %s' %
                        (requested_access, time.time() - start_time))
            return value

        data_handler = None
        try:
            data_handler = DataHandler()

            identities = []
            try:
                identities = get_identity_info_from_db(data_handler,
                                                       identity_name)["groups"]
                identities = map(lambda x: int(x), identities)
            except Exception as e:
                logger.warn("Failed to get identities list: %s" % e)
                identities = []

            #TODO: handle isDeny
            while resource_acl_path:
                acl = data_handler.GetResourceAcl(resource_acl_path)

                for ace in acl:
                    ace_id = int(ace["identityId"])
                    id_in_identities = ace_id in identities
                    id_in_range = ace_id < INVALID_RANGE_START or ace_id > INVALID_RANGE_END
                    if ace["identityName"] == identity_name or (
                            id_in_identities and id_in_range):
                        permissions = permissions & (~ace["permissions"])
                        if not permissions:
                            logger.info(
                                'Yes for %s in time %s' %
                                (requested_access, time.time() - start_time))
                            resource_acl_cache.add(requested_access, True)
                            return True

                resource_acl_path = AuthorizationManager.__GetParentPath(
                    resource_acl_path)

            logger.info("No for %s in time %s" %
                        (requested_access, time.time() - start_time))
            resource_acl_cache.add(requested_access, False)
            return False

        except Exception as e:
            logger.error("Exception: %s" % e)
            logger.warn("No (exception) for %s in time %s" %
                        (requested_access, time.time() - start_time))
            return False

        finally:
            if data_handler is not None:
                data_handler.Close()
示例#20
0
def ApproveJob(jobId):
	dataHandler = DataHandler()
	ret = False
	jobs =  dataHandler.GetJob(jobId=jobId)
	if len(jobs) == 1:
		ret = dataHandler.ApproveJob(jobId)
	dataHandler.Close()
	return ret
示例#21
0
def AddCommand(jobId,command):
	dataHandler = DataHandler()
	ret = False
	jobs =  dataHandler.GetJob(jobId=jobId)
	if len(jobs) == 1:
		ret = dataHandler.AddCommand(jobId,command)
	dataHandler.Close()
	return ret
示例#22
0
def GetCommands(userName, jobId):
    commands = []
    dataHandler = DataHandler()
    jobs = dataHandler.GetJob(jobId=jobId)
    if jobs[0]["userName"] == userName or AuthorizationManager.HasAccess(userName, ResourceType.VC, jobs[0]["vcName"], Permission.Collaborator):
        commands = dataHandler.GetCommands(jobId=jobId)
    dataHandler.Close()
    return commands
示例#23
0
    def __init__(self):
        """
        The consturctor that read the movie-to-name dataset.

        """

        tempdataset = DataHandler()
        self.dataset = tempdataset
        self.readMovieName()
示例#24
0
def UpdateVC(userName, vcName, quota, metadata):
    ret = None
    dataHandler = DataHandler()
    if AuthorizationManager.IsClusterAdmin(userName):
        ret =  dataHandler.UpdateVC(vcName, quota, metadata)
    else:
        ret = "Access Denied!"
    dataHandler.Close()
    return ret
示例#25
0
def DeleteVC(userName, vcName):
    ret = None
    dataHandler = DataHandler()
    if AuthorizationManager.IsClusterAdmin(userName):
        ret =  dataHandler.DeleteVC(vcName)
    else:
        ret = "Access Denied!"
    dataHandler.Close()
    return ret
示例#26
0
def UpdateStorage(userName, vcName, url, storageType, metadata, defaultMountPath):
    ret = None
    dataHandler = DataHandler()
    if AuthorizationManager.HasAccess(userName, ResourceType.VC, vcName, Permission.Admin):
        ret =  dataHandler.UpdateStorage(vcName, url, storageType, metadata, defaultMountPath)
    else:
        ret = "Access Denied!"
    dataHandler.Close()
    return ret
示例#27
0
def DeleteStorage(userName, vcName, url):
    ret = None
    dataHandler = DataHandler()
    if AuthorizationManager.HasAccess(userName, ResourceType.VC, vcName, Permission.Admin):
        ret =  dataHandler.DeleteStorage(vcName, url)
    else:
        ret = "Access Denied!"
    dataHandler.Close()
    return ret
示例#28
0
def AddStorage(userName, vcName, url, storageType, metadata, defaultMountPath):
    ret = None
    dataHandler = DataHandler()
    if AuthorizationManager.IsClusterAdmin(userName):
        ret =  dataHandler.AddStorage(vcName, url, storageType, metadata, defaultMountPath)
    else:
        ret = "Access Denied!"
    dataHandler.Close()
    return ret
示例#29
0
def GetJobStatus(jobId):
    result = None
    dataHandler = DataHandler()
    jobs = dataHandler.GetJob(jobId=jobId)
    if len(jobs) == 1:
        key_list = ["jobStatus", "jobTime", "errorMsg"]
        result = {key: jobs[0][key] for key in key_list}
    dataHandler.Close()
    return result
示例#30
0
def PauseJob(userName, jobId):
    dataHandler = DataHandler()
    ret = False
    jobs =  dataHandler.GetJob(jobId=jobId)
    if len(jobs) == 1:
        if jobs[0]["userName"] == userName or AuthorizationManager.HasAccess(userName, ResourceType.VC, jobs[0]["vcName"], Permission.Admin):
            ret = dataHandler.UpdateJobTextField(jobId,"jobStatus","pausing")
    dataHandler.Close()
    return ret