Git Product home page Git Product logo

service-manager's Introduction

SERVICE MANAGER

Responsible of categorizing services into the system and improving QoS before and during the execution of a service

License CircleCI

This development is part of the European Project mF2C.

Usage

The Service Manager provides a graphical user interface in https://localhost/sm/index.html to register new services into the system and to launch service instances.

Service registration

To register a new service, there are a set of required parameters that must be specified:

  • Name: descriptive name of the service
  • Executable name: specific name of the executable (e.g. hello-world)
  • Type of executable: the type of application [compss, docker, docker-compose, docker-swarm, kubernetes]
  • Agent type: the type of agent where the application must run [cloud, normal, micro]
  • SLA template: a SLA template has to be selected for the service

And a set of optional parameters:

  • Description: short description of the service
  • Ports: required ports to run the service
  • Number of agents: specific number of agents to run the service, if not specified, the service is launched in all available agents
  • CPU architecture: type of architecture for the service to run [x86-64, ARM]
  • Operating system: type of OS for the service to run [linux, mac, windows]
  • Required resources: set of required resources (i.e. sensors) for the service to run
  • Optional resources: set of optional resources (i.e. actuators) for the service to use

Service catalog

Once the service is registered, it will appear in the service catalog among with other registered services. The service can be launched in the system using the launch button or be deleted.

API

  • Endpoint http://localhost:46200

  • GET /api -> returns the list of all services

  • GET /api/<service_id> -> returns the specified service

  • POST /api, DATA service -> submit new service

  • GET /api/{service_instance_id} -> check QoS and returns the specified service instance

  • Service definition example:

     {
          "name": "compss-hello-world",
          "description": "hello world example",
          "exec": "mf2c/compss-test:it2",
          "exec_type": "compss",
          "exec_ports": [8080, 8081],
          "sla_templates": [template1],
          "agent_type": "normal",
          "num_agents": 1,
          "cpu_arch": "x86-64",
          "os": "linux",
          "req_resource": ["sensor_1"],
          "opt_resource": ["sensor_2"]
     }
    

CHANGELOG

1.10.3 (11.12.19)

  • Fixed issues with the GUI when registering services

1.10.2 (06.12.19)

  • Added initial values for cpu, memory, disk, network when a service is registered

1.10.1 (15.11.19)

  • Added the SLA template id when launching a service through the GUI

1.10.0 (13.11.19)

  • Updated QoS enforcement to consider different guarantees for every service operation
  • Updated SM-LM interface for the GUI

1.9.3 (24.10.19)

Changed

  • Now QoS enforcement takes into account the number of agents used from service-instance instead from service.

1.9.2 (21.10.19)

Changed

  • Updates logging in the QoS Enforcement.
  • Fixes a bug in QoS enforcement when retrieving a service from a service-instance.
  • Fixes a bug in QoS with SLA constraint parameters

1.9.1 (08.10.19)

Changed

  • Fixes a bug when updating a qos-model into cimi.

1.9.0 (07.10.19)

Changed

  • QoS Provider updated to work without agreement and with device_id instead of url in the agent resource.

1.8.4 (03.10.19)

Changed

  • Now if a service-instance has no valid agreement and the qos-model cannot be submitted, the QoS Provider returns 404.

1.8.3 (16.09.19)

Added

  • wget to docker image for health check

Changed

  • Fixes long strings formatting in the GUI

1.8.2 (16.08.19)

Changed

  • New library for the SSE client

1.8.1 (15.08.19)

Changed

  • Checks if cimi is up before trying to connect to the event manager
  • Improves the logs

1.8.0 (14.05.19)

Added

  • Now QoS enforcement supports subscription to the Event Manager
  • Added a new call to Lifecycle when the expected execution time of a service is longer than the one specified in the agreement

Changed

  • updated service definition
  • shortened api endpoints

service-manager's People

Contributors

fcarp10 avatar

Watchers

James Cloos avatar Cristovao Cordeiro avatar  avatar  avatar

service-manager's Issues

hello world

this app is a must to assist development by incrementally testing the integration of components when they are updated

needs mF2C/mF2C#80

Define workflow for QoS enforcement

  1. LM gets a list of agents from Recomender
  2. LM sends the list to COMPSs
  3. COMPSs publish expected execution time during service runtime
  4. QoS enforcer detects if SLA will be broken based on the expected execution time
  5. if true, then QoS enforcer notifies the LM (how??)
  6. LM gets an updated (if so) list of devices from Recommender
  7. LM sents the new list to COMPSs

describe schema is not consistent with the component

The schema described in the README file :

  "id":"1",
  "name":"GPS",
  "description":"get the GPS location",
  "created" : "15.01.18",
  "updated" : "18.01.18",
  "resourceURI" : "...",
      "category": {
          "timeLimit":"10",
          "location":"cloud",
          "priority":"1",
          "cpu":"1",
          "memory":"200",
          "storage":"20",
          "network":"100"
          }
}```

is not consistent with the JSON object passed by the user, ex: 

{"id" : "1", "timeLimit" : "10", "location" : "0" }


and is also not the same as the API response (**even though this can in fact be different**):

{
"taskId" : "1",
"status" : 201,
"message" : "Task computed correctly"
}

bug when no ID is given

When no resource ID is given, the API returns: { "taskId" : null, "status" : 201, "message" : "Task computed correctly" }

The right behavior should be:
1 - the user should not pass the ID as he doesn't know what's unique and what's not.
2 - the API should ignore the attribute "ID" if passed by the user, and simply either generate its own UID or forward the request to CIMI which will do exactly that
3 - ID should always be unique and of the same type, so having resources with ID "1" and null should never happen

"submit" endpoint and "DELETE" action are redundant

this is just an enhancement, but, to submit a mapping there's no need for the "submit" termination as the HTTP verb POST is enough.

Same for "DELETE", no need to have a specific action for that because you could simply do curl -XDELETE http://localhost:8080/api/v1/service-management/mapping/<service_id>

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.