Пример #1
0
    def do_leave(self, args):
        """
    Function: leave

    This function helps vehicle to exit the building.

    Usage:  leave <parking_slot_number>

    Examples: leave 4

    Notes:
      1. parking_slot_number must be non-negative integer.

    Args:
      int: Parking slot number, where vehicle was parked.

    """
        user_note = "Invalid input, provide valid slot number"
        assert validate_input(args.split(), ARRAY, array_length=1), user_note
        slot = args.split()[0]
        assert validate_input(
          slot, INTEGER, required_range=(1, self.__parking_object.capacity)), \
          user_note
        slot = int(slot)
        self.__parking_object.leave(slot)
Пример #2
0
    def do_registration_numbers_for_cars_with_colour(self, args):
        """
    Function: registration_numbers_for_cars_with_colour

    This function gets you the registration numbers of all cars having the
    specified color.

    Usage:  registration_numbers_for_cars_with_colour <color>

    Examples: registration_numbers_for_cars_with_colour Black

    Notes:
      1. Color should be entered in case sensitive.

    Args:
      str: Color of the car.
    """

        user_note = "Provide proper value of color for search"
        assert validate_input(args.split(), ARRAY, array_length=1), user_note

        color = args.split()[0]
        assert color.isalpha(), user_note

        slots = self.__parking_object.query(color=color)

        if not slots:
            print("No Vehicle Found for the query")
            return

        data = [(slot, vehicle.number, vehicle.color)
                for slot, vehicle in slots.items()]
        print tabulate(data,
                       headers=["Slot No", "Registration No", "Color"],
                       tablefmt='grid')
Пример #3
0
    def do_park(self, args):
        """
    Function: park

    This function provides free slot to park the vehicle.

    Usage:  park <vehicle_registration_number> <color>

    Examples: park   KA-01-HH-1234   White

    Notes:
      1. Registration number and Color should be entered in case sensitive.

    Args:
      str: Color of the car.
    """
        args = args.split()
        user_note = "Required inut <register_no> and <color>, type *help park* " \
                    "for more details"
        assert validate_input(args, ARRAY, array_length=2), user_note

        number = args[0]
        user_note = "ALERT, Duplicate numbered Vehicle Found"
        assert not self.__parking_object.query(number=number), user_note
        color = args[1]
        user_note = "Value for color must be only alphaphets"
        assert color.isalpha(), user_note

        vehicle = Vehicle(*args)
        self.__parking_object.park(vehicle)
Пример #4
0
def main(args):
    config = configuration.get_config(args)

    url = utils.validate_input(config.get("username"), config.get("token"), config.get("server"))
    connection = utils.connect(url)
    if config.get("repo"):
        retrieve_jobs(config.get("repo"))
    load_jobs()
    start_time = time.time()

    bundle_stream = None
    if config.get("stream"):
        bundle_stream = config.get("stream")

    submit_jobs(connection, config.get("server"), bundle_stream=bundle_stream)

    if config.get("poll"):
        jobs = poll_jobs(connection, config.get("timeout"))
        end_time = time.time()
        if config.get("bisect"):
            for job_id in jobs:
                if 'result' in jobs[job_id]:
                    if jobs[job_id]['result'] == 'FAIL':
                        exit(1)
        jobs['duration'] = end_time - start_time
        jobs['username'] = config.get("username")
        jobs['token'] = config.get("token")
        jobs['server'] = config.get("server")
        results_directory = os.getcwd() + '/results'
        utils.mkdir(results_directory)
        utils.write_json(config.get("poll"), results_directory, jobs)
    exit(0)
def main(args):
    config = configuration.get_config(args)

    url = utils.validate_input(config.get("username"), config.get("token"),
                               config.get("server"))
    connection = utils.connect(url)
    if config.get("repo"):
        retrieve_jobs(config.get("repo"))
    load_jobs()
    start_time = time.time()

    bundle_stream = None
    if config.get("stream"):
        bundle_stream = config.get("stream")

    submit_jobs(connection, config.get("server"), bundle_stream=bundle_stream)

    if config.get("poll"):
        jobs = poll_jobs(connection, config.get("timeout"))
        end_time = time.time()
        jobs['duration'] = end_time - start_time
        jobs['username'] = config.get("username")
        jobs['token'] = config.get("token")
        jobs['server'] = config.get("server")
        results_directory = os.getcwd() + '/results'
        utils.mkdir(results_directory)
        utils.write_yaml(config.get("poll"), results_directory, jobs)
    exit(0)
Пример #6
0
    def post(self):
        user = users.get_current_user()
        if not user:
            self.redirect('/')
        else:
            board_id = self.request.get('board')
            title = self.request.get('title')
            link = self.request.get('link')
            description = self.request.get('description')
            actions = [x for x in constants.ACTIONS if self.request.get(x)]

            if actions:
                board_id, link, errors = utils.validate_input(board_id, link)
                if errors:
                    self.render('public.html', id=board_id, link=link, errors=errors, actions=constants.ACTIONS, signout=constants.SIGNOUT)
                else:
                    feed_url = utils.create_feed(
                        user,board_id,
                        title,link,
                        description,
                        actions,
                        public_board=True,
                        get_all=False,
                        token=None
                    )
                    self.render('congrats.html',feed_url=feed_url,signout=constants.SIGNOUT)
            else: # They didn't mark any of the checkboxes
                self.render('public.html',check_error=True,actions=constants.ACTIONS,signout=constants.SIGNOUT)
Пример #7
0
    def do_slot_number_for_registration_number(self, args):
        """
    Function: slot_number_for_registration_number

    This function gets you the location of the car with given registration
    number, if parked in the building's parkings slot.

    Usage:  slot_number_for_registration_number <registration_number>

    Examples: slot_number_for_registration_number   KA-01-HH-3141

    Notes:
      1. Registration Number should be entered in case sensitive.

    Args:
      str: Registration Number of the car.
    """
        user_note = "Provide valid registration number to search"
        assert validate_input(args.split(), ARRAY, array_length=1), user_note
        number = args.split()[0]
        slots = self.__parking_object.query(number=number)
        if not slots:
            print("No Vehicle Found for the query")
            return

        print("Vehicle Found in slots: %s" % slots.keys())
Пример #8
0
    def do_slot_numbers_for_cars_with_colour(self, args):
        """Function: slot_numbers_for_cars_with_colour

    This function provides list of cars in the given color along with the
    parked location, if present in the parking slot of the building.

    Usage:  slot_numbers_for_cars_with_colour <color>

    Examples: slot_numbers_for_cars_with_colour   White

    Notes:
      1. Color should be entered in case sensitive.

    Args:
      str: Color of the car.
    """
        user_note = "Provide valid value for <color> to search, check help <cmd> " \
                    "for more information"
        assert validate_input(args.split(), ARRAY, array_length=1), user_note
        color = args.split()[0]

        assert color.isalpha(), "Invalid Color input"
        slots = self.__parking_object.query(color=color)

        if not slots:
            print("No Vehicle Found for the query")
            return

        print("Vehicle Found in slots: %s" % slots.keys())
Пример #9
0
def parse_json(json):
    jobs = utils.load_json(json)
    url = utils.validate_input(jobs['username'], jobs['token'], jobs['server'])
    connection = utils.connect(url)
    duration = jobs['duration']
    # Remove unused data
    jobs.pop('duration')
    jobs.pop('username')
    jobs.pop('token')
    jobs.pop('server')
    return connection, jobs, duration
Пример #10
0
def parse_json(json):
    jobs = utils.load_json(json)
    url = utils.validate_input(jobs['username'], jobs['token'], jobs['server'])
    connection = utils.connect(url)
    duration = jobs['duration']
    # Remove unused data
    jobs.pop('duration')
    jobs.pop('username')
    jobs.pop('token')
    jobs.pop('server')
    return connection, jobs, duration
Пример #11
0
def main(args):
    config = configuration.get_config(args)

    url = utils.validate_input(config.get("username"), config.get("token"), config.get("server"))
    connection = utils.connect(url)
    load_jobs()
    start_time = time.time()

    bundle_stream = None
    if config.get("stream"):
        bundle_stream = config.get("stream")

    create_jobs(connection, config.get("server"), bundle_stream=bundle_stream)

    exit(0)
def main(args):
    config = configuration.get_config(args)

    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    if config.get("jobs"):
        load_jobs(config.get("jobs"))
        print "Loading jobs from top folder " + str(config.get("jobs"))
    else:
        load_jobs(os.getcwd())

    if job_map:
        url = utils.validate_input(config.get("username"), config.get("token"), config.get("server"))
        connection = utils.connect(url)
        submit_jobs(connection)
    exit(0)
Пример #13
0
def main(args):
    config = configuration.get_config(args)

    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    jobs = config.get("jobs")
    print("Loading jobs from {}".format(jobs))
    load_jobs(jobs)

    if JOBS:
        start_time = time.time()
        url = utils.validate_input(config.get("username"), config.get("token"),
                                   config.get("server"))
        connection = utils.connect(url)
        submit_jobs(connection)
    exit(0)
Пример #14
0
def main(args):
    config = configuration.get_config(args)

    url = utils.validate_input(config.get("username"), config.get("token"),
                               config.get("server"))
    connection = utils.connect(url)

    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    if config.get("jobs"):
        load_jobs(config.get("jobs"))
        print "Loading jobs from top folder " + str(config.get("jobs"))
    else:
        load_jobs(os.getcwd())

    submit_jobs(connection)
    exit(0)
Пример #15
0
def main(args):
    config = configuration.get_config(args)

    jobs_submitted = config.get('submitted')
    lab = config.get('lab')
    if jobs_submitted:
        if not lab:
            raise Exception("Lab name required when saving submitted jobs")
        if os.path.exists(jobs_submitted):
            os.unlink(jobs_submitted)

    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    jobs = config.get("jobs")
    print("Loading jobs from {}".format(jobs))
    load_jobs(jobs)

    if not JOBS:
        print("No jobs to submit")
        result = False
    else:
        start_time = time.time()
        labs_config = configparser.ConfigParser()
        labs_config.read('labs.ini')
        lava_api = labs_config[config.get("lab")]['api']
        print("LAVA API: {}".format(lava_api))
        url = utils.validate_input(config.get("username"),
                                   config.get("token"),
                                   lava_api)
        connection = utils.connect(url)
        result = submit_jobs(connection)
        if jobs_submitted and SUBMITTED:
            print("Saving submitted jobs data in {}".format(jobs_submitted))
            data = {
                'start_time': start_time,
                'lab': config.get('lab'),
                'jobs': {k: v for k, v in SUBMITTED.iteritems() if v},
            }
            with open(jobs_submitted, 'w') as json_file:
                json.dump(data, json_file)

    exit(0 if result is True else 1)
Пример #16
0
def main(args):
    config = configuration.get_config(args)

    jobs_submitted = config.get('submitted')
    lab = config.get('lab')
    if jobs_submitted:
        if not lab:
            raise Exception("Lab name required when saving submitted jobs")
        if os.path.exists(jobs_submitted):
            os.unlink(jobs_submitted)

    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    jobs = config.get("jobs")
    print("Loading jobs from {}".format(jobs))
    load_jobs(jobs)

    if not JOBS:
        print("No jobs to submit")
        result = False
    else:
        start_time = time.time()
        labs_config = configparser.ConfigParser()
        labs_config.read('labs.ini')
        lava_api = labs_config[config.get("lab")]['api']
        print("LAVA API: {}".format(lava_api))
        url = utils.validate_input(config.get("username"), config.get("token"),
                                   lava_api)
        connection = utils.connect(url)
        result = submit_jobs(connection)
        if jobs_submitted and SUBMITTED:
            print("Saving submitted jobs data in {}".format(jobs_submitted))
            data = {
                'start_time': start_time,
                'lab': config.get('lab'),
                'jobs': {k: v
                         for k, v in SUBMITTED.iteritems() if v},
            }
            with open(jobs_submitted, 'w') as json_file:
                json.dump(data, json_file)

    exit(0 if result is True else 1)
Пример #17
0
def main(args):
    config = configuration.get_config(args)

    url = utils.validate_input(config.get("username"), config.get("token"),
                               config.get("server"))
    connection = utils.connect(url)
    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    if config.get("jobs"):
        load_jobs(config.get("jobs"))
        print "Loading jobs from top folder " + str(config.get("jobs"))
    else:
        load_jobs(os.getcwd())

    start_time = time.time()

    bundle_stream = None
    if config.get("stream"):
        bundle_stream = config.get("stream")

    submit_jobs(connection, config.get("server"), bundle_stream=bundle_stream)

    if config.get("poll"):
        jobs = poll_jobs(connection, config.get("timeout"))
        end_time = time.time()
        if config.get("bisect"):
            for job_id in jobs:
                if 'result' in jobs[job_id]:
                    if jobs[job_id]['result'] == 'FAIL':
                        exit(1)
        jobs['duration'] = end_time - start_time
        jobs['username'] = config.get("username")
        jobs['token'] = config.get("token")
        jobs['server'] = config.get("server")
        results_directory = os.getcwd() + '/results'
        utils.mkdir(results_directory)
        utils.write_json(config.get("poll"), results_directory, jobs)
    exit(0)
Пример #18
0
def main(args):
    config = configuration.get_config(args)

    url = utils.validate_input(config.get("username"), config.get("token"), config.get("server"))
    connection = utils.connect(url)
    if config.get("repo"):
        retrieve_jobs(config.get("repo"))

    if config.get("jobs"):
        load_jobs(config.get("jobs"))
        print "Loading jobs from top folder " + str(config.get("jobs"))
    else:
        load_jobs(os.getcwd())

    start_time = time.time()

    bundle_stream = None
    if config.get("stream"):
        bundle_stream = config.get("stream")

    submit_jobs(connection, config.get("server"), bundle_stream=bundle_stream)

    if config.get("poll"):
        jobs = poll_jobs(connection, config.get("timeout"))
        end_time = time.time()
        if config.get("bisect"):
            for job_id in jobs:
                if "result" in jobs[job_id]:
                    if jobs[job_id]["result"] == "FAIL":
                        exit(1)
        jobs["duration"] = end_time - start_time
        jobs["username"] = config.get("username")
        jobs["token"] = config.get("token")
        jobs["server"] = config.get("server")
        results_directory = os.getcwd() + "/results"
        utils.mkdir(results_directory)
        utils.write_json(config.get("poll"), results_directory, jobs)
    exit(0)
Пример #19
0
    def do_create_parking_lot(self, capacity):
        """
    Function: create_parking_lot

    This must be the first command to execute, and can be called only once.
    This initiates the system with Capacity of the buliding to facilitate
    multiple car to park.

    Usage:  create_parking_lot <capacity>

    Examples: create_parking_lot 6

    Notes:
      1. capacity must be non-negative integer.

    Args:
      int: capacity to park multiple vehicle in the building.

    """
        assert validate_input(capacity, INTEGER, required_positive=True)

        self.__parking_object = ParkingSystem(capacity=int(capacity))
        print("Created a parking lot with {capacity} slots".format(
            capacity=capacity))