Skip to content

[research] discuss GAOM boundaries and design the interface #89

@shadeofblue

Description

@shadeofblue
  • consult @stranger80 on the behavior of the object model on its boundaries
  • @stranger80 decides on the location of the documentation
  • document the desired interface

boundaries being the places where the "golem deploy" tree ends and where references to structures from outside the "golem deploy" model exist

Example 1 - payload

here is the payload definition:

payloads:
  db:
    runtime: "vm"
    params:
      image_hash: "85021afecf51687ecae8bdc21e10f3b11b82d2e3b169ba44e177340c"

in runtime, each payloads entry is resolved to a Payload object, which is a generic container for any Golem payload and it consists mostly of properties and constraints based on which a Demand is constructed

Example 2 - service

nodes:
  db:
    payload: "db"
    init:
      - run:
          args:
            - "/bin/run_rqlite.sh"
    network: "default"

in runtime, each of the nodes children is resolved to a Cluster object which contains (one or more) instance(s) of the service, each of which is an instance of a DappService class (inheriting from Service) ...

questions:

  • do we want to provide some way to access properties of the underlying objects directly?
  • if yes, what should be the interface?
    • should we try to include all these objects in the GAOM?
    • do we want to provide a generic interface of accessing the properties of the internal objects
  • alternatively, (and preferably?) we may wish to define a set of generic GAOM properties for each of those types which would be internally translated to appropriate objects
    • most (all?) of these will be read-only

e.g. a nodes entry could be described as having the following read-only structure:

    - service:
        agreement_id: str
        activity_id: str
        provider_id: str
        provider_name: str

should we enable access to DappService's queues through GAOM?

the resultant GAOM:

nodes:
  db:
    payload: "db"
    init:
      - run:
          args:
            - "/bin/run_rqlite.sh"
    network: 
        - default:
             ip:
               - "192.168.0.2"
    agreement_id: str
    activity_id: str
    provider_id: str
    provider_name: str
    network: reference
    ip: ip-address

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions