Git Product home page Git Product logo

iceflix's Introduction

IceFlix: Main service

https://github.com/israelMateos/IceFlix/

Made by Israel Mateos Aparicio Ruiz Santa Quiteria for Distributed Systems course.

The main objective of this project is developing a distributed system based on microservicies, taking Netflix as a reference. The microservice Main acts as a gateway to the system for clients. These may get references to Authenticator, MediaCatalog and FileService services through its interface. Altogether, these microservices form an application which offers files on demand.

How to use

Prerequisites: Python 3.10 or greater, pip, IceBox, IceStorm (the packages corresponding to these last 2 change depending on your Linux distribution).

Before running the service, it is necessary to install the package via the command-line, using the following command while on the root directory of this repository:

$ pip install .

After installing it, you can either create an IceStorm instance and connect to it, or connect to an existing IceStorm instance.

1. Create your own IceStorm instance.

You can create your own IceStorm instance by using the following command while on the root directory of this repository:

$ ./run_icestorm

Please, ensure that the script has execute permissions for the user who is running it. No more configurations are required, since the application is already configured to connect to this instance by default in main.config.

2. Connect to an existing IceStorm instance.

In order to connect to an existing IceStorm instance, you must ask for its proxy first. Once you have it, you have to modify the value of the property IceStorm.TopicManager in main.config in the following way: IceStorm.TopicManager={proxy for the instance} (do not write the brackets).


After creating your IceStorm instance or modifying the configuration with the expected instance, you can run the service by the run_service script, using the following command while on the root directory of this repository:

$ ./run_service

Please, ensure that the script has execute permissions for the user who is running it.

Project structure

This repository contains the following files and directories:

  • configs has the configuration file for the service, as well as for the IceStorm service.
  • iceflix is the main Python package.
  • iceflix/__init__.py is an file needed by Python to recognise the iceflix directory as a Python module, and where the IceFlix package importation is defined.
  • iceflix/cli.py contains several functions to handle the basic console entry points defined in python.cfg.
  • iceflix/iceflix.ice contains the Slice interface definition for the lab.
  • iceflix/main.py has the implementation of Main service, along with the service servant itself.
  • pyproject.toml defines the build system used in the project.
  • run_service is a script that can be run directly from the repository root directory. It is able to run the Main service.
  • run_icestorm is a script that can be run directly from the repository root directory. It is able to create an instance of the IceStorm service.
  • setup.cfg is a Python distribution configuration file for Setuptools.

iceflix's People

Contributors

israelmateos avatar

Watchers

 avatar  avatar  avatar

iceflix's Issues

Requisito newService existente

El requisito "Comprobar que si se recibe un newService de un servicio existente previamente, ese identificador queda invalidado (ni el servicio antiguo ni el nuevo se devuelven)" no se ha implementado correctamente. Implementarlo.

MainApp - testing

Implementar pruebas unitarias para la clase MainApp y realizarlas.

Devolver referencias distintas

Implementar los siguientes requisitos:

  • En caso de haber varios Authenticator anunciándose disponibles, no se devuelve siempre la misma referencia.
  • En caso de haber varios MediaCatalog anunciándose disponibles, no se devuelve siempre la misma referencia.
  • En caso de haber varios FileService anunciándose disponibles, no se devuelve siempre la misma referencia.

Concordancia con interfaz IceFlix

El número de argumentos de los métodos en la interfaz IceFlix y en el código de main.py no concuerdan por el argumento Current. Arreglaro.

Modularizar funciones mock

Las funciones mock_auth_checked_cast, mock_catalog_checked_cast y mock_file_checked_cast se repiten en varios tests. Modularizarlas.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.