Coder Social home page Coder Social logo

freetakteam / digitalpy Goto Github PK

View Code? Open in Web Editor NEW
8.0 11.0 4.0 839 KB

A framework to support digital engineering in the python language

License: Eclipse Public License 2.0

Python 100.00%
tak architecture-components python mda zeromq framework digital-engineering freetakserver

digitalpy's People

Contributors

brothercorvo avatar dlc-ariel avatar javapak avatar naan108 avatar naman108 avatar qpshinqp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

digitalpy's Issues

Implement Initial IAM

The IAM component in DigitalPy is designed to support standard authentication and authorization protocols, catering to both internal and external applications, API developers, and end-users. It ensures secure access control and identity management within the framework.

To move forward with the development of this component we need to realize the fundamental use case of Access Control.

Access Control Determines user permissions and access levels, ensuring users are only able to perform actions they are authorized for.

Role-Based Access Control (RBAC): Implements RBAC to manage user roles and permissions, enabling fine-grained access control.

Tasks

Implement Core API

It would be useful to have a core API service exposed by all digitalpy applications for developer convenience. Considering all digitalpy applications must have at least one service and we expect developers to spend most of their time on components, an initial API could be exceedingly valuable.

Facade -

needs to be updated - tracing provider. reference impls will be updated. @naman108

Implement Authorization Endpoint

There must be an authorization endpoint which explicitly connects a user session with an existing system user or anonymous if none exists.

Implement back-compatibility mode

Implement a system to retain back-compatibility, specifically for FreeTAKServer while we upgrade FreeTAKServer to the latest version.

Add asynchronous calling support to digitalpy

  • implement in digitalpy
  • implement for emergency
  • update automated tests to use async
  • improve logging, code linting and documentation
  • added automated emergency sending on client connection

Release new version of digitalPy

Currently all the build of FTS fail 'cause of the version of digitalPy
ERROR: Could not find a version that satisfies the requirement digitalpy>=0.2.7 (from freetakserver) (from versions: 0.2.4.3, 0.2.5.2)
what is the current released version in Pip?
Image attached to message
this is very old, can you please release a new version?

Issues with DigitalPy on both way of installation zero touch and pip install (No module named 'Catalog')

Hi, honestly I tried to fix this issue and not to ask the FreeTak team, but I have no other option how to solve this issue.
AWS Ubuntu 22.04 Python 3.11
when i start the service i received the following errors, i tried to run it on virtual env and without it, the result is always the same.
I am not expereienced person in python, but i checked source code and found out that all this issues are related to digitalpy and the imports inside the project.
image
I tried to reinstall this package also i tried older versions but it didn't end well.
I even tried to install this package from git repositories ( sudo pip install git+https://github.com/FreeTAKTeam/DigitalPy.git )

the interesting thing here is that some parts of freetakserver work, and fortunately i don't have issues with FreeTakUI :)
but this error made me crazy

Errors log
/my_project$ sudo venv/bin/python3 venv/lib/python3.11/site-packages/FreeTAKServer/controllers/services/FTS.py CA found locally, not generating a new one Certificate file exists, aborting. Certificate file exists, aborting. failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/translation, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/network, with error: name 'Facade' is not defined failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/component_management, with error: module 'digitalpy.core.component_management.component_management_facade' has no attribute 'ComponentManagement' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/logic, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/util, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/persistence, with error: module 'digitalpy.core.persistence.persistence_facade' has no attribute 'Persistence' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/zmanager, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/queries, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/telemetry, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/digitalpy/core/health, with error: No module named 'Catalog' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/FreeTAKServer/core/domain, with error: module 'FreeTAKServer.core.domain.domain_facade' has no attribute 'Domain' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/FreeTAKServer/core/fts_core, with error: module 'FreeTAKServer.core.fts_core.fts_core_facade' has no attribute 'FtsCore' failed to register component: /home/ubuntu/my_project/venv/lib/python3.11/site-packages/FreeTAKServer/core/data_package, with error: module 'FreeTAKServer.core.data_package.data_package_facade' has no attribute 'DataPackage'

DigitalPy formatting and dependencies issue

Hello! I have an issue with FTS installation.
If I fix it with autopep8, it can't resolve Catalog.
FTS-UI crashes because of missing requests.

Log below:

Cannot find CA file locally so generating one
Generating Key...
Generating Key...
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/telemetry, with error: inconsistent use of tabs and spaces in indentation (telemetry_facade.py, line 21)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/network, with error: unindent does not match any outer indentation level (network_facade.py, line 16)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/persistence, with error: module 'digitalpy.core.persistence.persistence_facade' has no attribute 'Persistence'
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/logic, with error: expected an indented block (logic_facade.py, line 22)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/translation, with error: expected an indented block (translation_facade.py, line 22)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/queries, with error: inconsistent use of tabs and spaces in indentation (queries_facade.py, line 21)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/util, with error: inconsistent use of tabs and spaces in indentation (util_facade.py, line 21)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/component_management, with error: module 'digitalpy.core.component_management.component_management_facade' has no attribute 'ComponentManagement'
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/zmanager, with error: inconsistent use of tabs and spaces in indentation (zmanager_facade.py, line 21)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/digitalpy/core/health, with error: inconsistent use of tabs and spaces in indentation (health_facade.py, line 21)
failed to register component: /home/pi/tak/lib/python3.9/site-packages/FreeTAKServer/core/data_package, with error: module 'FreeTAKServer.core.data_package.data_package_facade' has no attribute 'DataPackage'
failed to register component: /home/pi/tak/lib/python3.9/site-packages/FreeTAKServer/core/domain, with error: module 'FreeTAKServer.core.domain.domain_facade' has no attribute 'Domain'
failed to register component: /home/pi/tak/lib/python3.9/site-packages/FreeTAKServer/core/fts_configuration, with error: module 'FreeTAKServer.core.fts_configuration.fts_configuration_facade' has no attribute 'FtsConfiguration'
failed to register component: /home/pi/tak/lib/python3.9/site-packages/FreeTAKServer/core/fts_core, with error: module 'FreeTAKServer.core.fts_core.fts_core_facade' has no attribute 'FtsCore'
initiate_sockets
listening
listening
listening
start 213
starting now
running api
0.0.0.0
8080
(49946) wsgi starting up on http://0.0.0.0:8080
start 213
starting SSL now
0.0.0.0
8443
(49954) wsgi starting up on https://0.0.0.0:8443
CoTService started
CoTService started
{}
number of CoT messages received by services: 0
server started
mainRunFunction is running
client dict: {}
ssl cot service starting
started federation federate service
server started

Снимок экрана 2023-03-31 в 00 20 28

Support optional relationships

Currently serialization of optional relationships fails. If the relationship is optional it should default to none and only be initialized in the case that the object is present in the data being serialized.

create a "Hello World" Component for digitalPy

A 'Hello World' component is a simple Digital Py component that is used as a introductory example to learning the framework. It serves as a way to verify that the development environment is set up correctly and that the basic syntax and structure of DP code are working as expected.

The purpose of a 'Hello World' component is to display the message "Hello, World!" as a REST output when executed. It consists of a minimal amount of code and serves as a fundamental building block for more complex DP components.

Improve linting score to min 0.9

If we can reach a linting score of 0.9 we can use this as guard on further pull requests. This can also allow us to enforce documentation standards.

implement factories for all impl classes

to make the code more general, impl methods for things such as the zmanager may benefit from a factory pattern by enabling configurations to define what underlying protocol is used

ModuleNotFoundError: No module named 'digitalpy.core.security'

I am following this page to reset ssl certs : https://freetakteam.github.io/FreeTAKServer-User-Docs/Installation/Troubleshooting/SocketIssue/

When I try this command :
python3 -m digitalpy.core.security.crl_regen --ca-pem-path /usr/local/lib/python3.8/dist-packages/FreeTAKServer/certs/ca.pem --ca-key-path /usr/local/lib/python3.8/dist-packages/FreeTAKServer/certs/ca.key --crl-path /usr/local/lib/python3.8/dist-packages/FreeTAKServer/certs/FTS_CRL.json

python return :
/usr/bin/python3: Error while finding module specification for 'digitalpy.core.security.crl_regen' (ModuleNotFoundError: No module named 'digitalpy.core.security')

by looking in the site-package, the folder security does not exist.
by looking in source code in release tag : security folder does not exist
by looking in pypi website : the tar does not have the security folder.

Assertion failed: (src/mailbox.cpp:99)

this is a known issue with the pyzmq library, it can be fixed with the following steps:

  1. disable fts
  2. shut down fts
  3. pkill python
  4. restart the server
  5. run pip install --no-binary :all: --force-reinstall pyzmq

add support for enumerations in mode definitions

Currently parsing the model definitions generated by sparx EA Message Composer does not produce the expected behavior in regard to attributes of type enumeration. While there should be some sort of validation which is encorporated for attributes of this type there is not.

an example of such a model definition is as follows:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "http://iec.ch/TC57/Mission Invite#",
  "title": "Event",
  "type": "object",
  "description": "represents a TAK event: this class is instantiated with a standard set of values.\n  The opex field is intended to indicate that the event is part of a   live operation, an exercise, or a simulation.  For backward compatibility, absence of the opex indicates \"no statement\", which will be interpreted in   an installation specific manner.\n  \n  opex=\"o-&lt;name&gt;\" or \"e-&lt;nickname&gt;\"  or \"s-&lt;nickname&gt;\",\n  where \"-&lt;name&gt;\" is optional.  That is, it is permissible to   specify only \"o\", \"e\", or \"s\" for the opex value.\n<ul>\n\t<li>  o = operations</li>\n\t<li>  e = exercise</li>\n</ul>\n  s = simulation",
  "properties": {
    "access": {
      "description": "Specifies access controls that should be applied to the event",
      "type": "string",
      "minItems": 1,
      "maxItems": 1
    },
    "detail": {
      "$ref": "#/definitions/detail",
      "minItems": 1,
      "maxItems": 1
    },
    "how": {
      "description": "Gives a hint about how the coordinates were generated.  It is used specifically to relay a hint about the types of errors that may be expected in the data and to weight the data in systems that fuse  multiple inputs.",
      "type": "string",
      "minItems": 1,
      "maxItems": 1
    },
    "point": {
      "$ref": "#/definitions/point",
      "minItems": 1,
      "maxItems": 1
    },
    "stale": {
      "description": "The \"stale\" attribute defines the ending time of the event's validity interval. The start and stale fields together define an interval in time.\nIt has the same format as time and start.\nending time when an event should no longer be considered valid l (with respect to Zulu time in extended ISO 8601 format)\nIn protobuff is in milliseconds\n\nthe attribute is calculated as following\nString stale = DateUtil.toCotTime(millis + 20L * 1000L);",
      "type": "integer",
      "minItems": 1,
      "maxItems": 1
    },
    "start": {
      "description": "format - DTG\nThe \"start\" attribute defines the starting time of the event's validity interval. The start and stale fields together define an interval in time.\nIt has the same format as time and stale.\nstarting time of the event's validity interval (with respect to Zulu time in extended ISO 8601 format) \n. As different from the moment in which the element was generated\n\nin protobuff this is expressed in milliseconds",
      "type": "integer",
      "minItems": 1,
      "maxItems": 1
    },
    "time": {
      "description": "time stamp with respect to Zulu time indicating when an event was generated in extended ISO 8601 format \n\nin ProtoBuff expressed is in milliseconds",
      "type": "integer",
      "minItems": 1,
      "maxItems": 1
    },
    "type": {
      "description": "Event.type contains the Code for the Center on Target object. It Defines what the Event is about. An event may describe a physical object, a set of raw, unprocessed bits, or a tasking. \n# Hierarchically organized hint about event type (<b>default </b>is  'a-f-G-I' for \"Friendly Ground infrastructure)\nThe \"type\" attribute is a composite of components delimited by the semi-colon character. The first component of this composite attribute is defined below.\n   Future versions of this schema will define other components which we expect   will aid in machine filtering. Despite the exclusion of definitions   for additional components in this version of the schema, users of   this schema should expect and design an optional trailing field  delimited by the semi-colon character. This field can be ignored.\n<ul>\n\t<li>   <font color=\"#a52a2a\"><i>component1</i></font>;<font color=\"#32cd32\">optional field</font></li>\n</ul>\n     The first component (<font color=\"#a52a2a\">component1</font>) is a hierarchically organized hint about type.\n   The intention is that this hierarchy be flexible and extensible and facilitate simple filtering, translation and display.  To  facilitate  filtering, the hierarchy needs to present key  fields in an easily parsed and logical order.  To facilitate  this, this component is a composite of fields separated by the \"-\" punctuation   character, so a valid type would be: x-x-X-X-x.  Using a punctuation for field separation allows arbitrary expansion of the  type space, \n<i>e.g., a-fzp-mlk-gm-...</i>\n   Field meanings are type specific.  That is, the third field of an  \"<u>atom</u>\" type may represent air vs. ground while the same field for a   \"<u>reservation</u>\" type may represent purpose.\n\n<b><u>MEANING of 'a' in the first position</u></b>  \nThe \"Atoms\" portion of the type tree requires some additional explanation past the taxonomy defined below. The \"Atoms\" portion of  the type tree contains CoT defined fields and part of the <b>MIL-STD-2525</b>    type definition. <u>To distinguish MIL-STD-2525 type strings from CoT defined  fields, the MIL-STD-2525 types must be represented in all upper    case</u>. Differentiation of type namespace with upper/lower case   facilitates extension of CoT types and MIL-STD-2525 types without   name space conflict. An example:\n   <font color=\"#008080\">a</font>-<font color=\"#006400\">f</font>-<font color=\"#dc143c\"><b>A-B-C</b></font>-<font color=\"#00ffff\">x</font> \n<ul>\n\t<li>a = Atom</li>\n\t<li><font color=\"#006400\">f</font> = attitude or disposition (friendly in this case)</li>\n</ul>\n<ul>\n\t<li>A-B-C  =the SDIC 2525 separated by dashs</li>\n\t<li><font color=\"#00ffff\">x</font> = COT specific extension</li>\n</ul>\n   The organization of CoT and MIL-STD-2525 types can be determined   from the taxonomy below, but additional details are provided here.\n   The \"Atoms\" portion of the \"type\" tree contains the \"Battle  Dimension\" and  \"Function ID\" fields taken from MIL-STD-2525.\n   \"Battle Dimension\" is a single character taken from MIL-STD-2525 and is located in the position 5. \na-.-<font color=\"#dc143c\"><b>G</b></font>-I-M-N-B\n&nbsp;\n<ul>\n\t<li>P - Space</li>\n\t<li>A - Air</li>\n\t<li>G - Ground</li>\n\t<li>S - Sea Surface</li>\n\t<li>U - Sea Subsurface</li>\n\t<li>SF - Special Operations Forces</li>\n</ul>\n   The typical 2525 representation for \"Function ID\" is three groups of   two characters separated by a space (e.g. \"12 34 56\"). The CoT  schema maps this to a \"-\" delimited list of characters. (e.g. \"1-2-3-4-5-6\").\n   The concatenation of the \"Battle Dimension\" and \"Function ID\" fields    from the MIL-STD-2525 specification represented in the CoT schema   will be as follows:\n   battle dimension-<font color=\"#a52a2a\">func id char1</font>-func id char2- ... -func id char6\n   When an appropriate MIL-STD-2525 type exists, it should be used. If  there is a MIL-STD-2525 representation which is close, but may be   refined, a CoT extension to the 2525 type can be appended.\n   for example: \na-h-X-X-X-X-X-<b>i</b> might represent hostile MIL-STD-2525 type X-X-X-X-X  of   <b>Israeli </b>(the 'i'<b>) </b>manufacture. Again, the<u> CoT extension uses lower case</u>. \n   Conceptually, this extension defines further branching from the nearest MIL-STD-2525 tree point.\n   If no appropriate 2525 representation exists, a type definition can be added to the CoT tree defined here. The resulting definition    would be represented in all lower case. For example\n   a-h-G-p-i\n   might define atoms-hostile-Ground-photon cannon-infrared.\n   The taxonomy currently looks like this: Note that the coding of the  sub fields are determined entirely by the preceding fields!) The  current type tree is defined here. \n       <b>+--- First position, this event describes</b>\n<ul>\n\t<li>       a - Atoms - this event describes an actual \"thing\"</li>\n</ul>\n      <b>     +--- 2nd CoT affiliation of these atoms</b>\n<ul>\n\t<li><b>     </b>        p - Pending</li>\n\t<li>           u - Unknown</li>\n\t<li>           a - Assumed friend</li>\n\t<li>           f - Friend</li>\n\t<li>           n - Neutral</li>\n\t<li>           s - Suspect</li>\n\t<li>           h - Hostile</li>\n\t<li>           j - Joker</li>\n\t<li>           k - Faker</li>\n\t<li>           o - None specified</li>\n\t<li>           x - Other</li>\n</ul>\n<b>               +--- Battle dimension</b>\n<b>               |    Taken from MIL-STD-2525 \"Battle Dimension\" (upper case)</b>\n<ul>\n\t<li><b> </b>P - Space</li>\n</ul>\n<ul>\n\t<li>A - Air</li>\n\t<li>G - Ground</li>\n\t<li>S - Sea Surface</li>\n\t<li>U - Sea Subsurface</li>\n</ul>\n<ul>\n\t<li>SF - Special Operations Forces</li>\n</ul>\n          <b>         +--- Function (dimension specific!)</b>\n<b>              </b><i>See MIL-STD-2525B specification for  function fields (must be upper case)    </i>\n               Any number of char before the first “dash”, it express also the hierarchy\n(Hundreds of options)\n<b>       +--- The event describes ...</b>\n\n<b>    </b>       <b>b - Bits </b>- Events in the \"Bit\" group (pos 1163++ ) carry meta information about raw data sources.  For example, range-doppler  radar returns or SAR imagery represent classes of information that are \"bits\".  However, tracks derived from such sources represent objects on the battlespace and this have event type \"A-...\"\n                  The intention with the \"Bit\" type is to facilitate the identification of germane information products.\n                  This hierarchy is not intended to replace more detailed domain-specific meta information (such as that contained in NITF image headers or the GMTI data formats), rather it is intended to provide a domain-neutral mechanism for rapid filtering of information products.\n\n<b>           +--- Dimension     </b>\nsecond position, Like battle dimension but for 'b' types\n<ul>\n\t<li>        <font color=\"#006400\">   i - Imagery</font></li>\n</ul>\n<ol>\n\t<li>               e - Electro-optical</li>\n\t<li>               i - Infra red</li>\n\t<li>               s - SAR</li>\n\t<li>               v - video</li>\n</ol>\n<ul>\n\t<li>               ...</li>\n\t<li>           r - Radar</li>\n</ul>\n<ol>\n\t<li>            <font color=\"#006400\">   m - MTI data</font></li>\n</ol>\n<ul>\n\t<li>               ...</li>\n\t<li>        <font color=\"#006400\">   d - Sensor detection events</font></li>\n</ul>\n<ol>\n\t<li>               s - Seismic</li>\n\t<li>               d - Doppler</li>\n\t<li>               a - Acoustic</li>\n\t<li>               m - Motion (e.g., IR)</li>\n</ol>\n<ul>\n\t<li>           m - Mapping</li>\n</ul>\n<ol>\n\t<li>               p - Designated point (rally point, etc.)</li>\n\t<li>                   i - initial points</li>\n\t<li>                   r - rally points</li>\n\t<li>                   ...</li>\n</ol>\n\n<b>       r - Reservation/Restriction/References </b>\n                  Events in this category are generally \"notices\" about specific areas.  These events are used for deconfliction and conveyance of significant \"area\" conditions.  Generally, the \"point\" entity will describe a conical region that completely encloses the affected area.  The details entity will provide more specific bounds on precisely the region affected.\n<ul>\n\t<li>           u - Unsafe (hostile capability)</li>\n\t<li>           o - Occupied (e.g., SOF forces on ground)</li>\n\t<li>           c - Contaminated (NBC event)</li>\n\t<li>               c - chemical</li>\n\t<li>                   x - agents, direction,</li>\n\t<li>                   y</li>\n\t<li>                   z</li>\n\t<li>           f - Flight restrictions</li>\n</ul>\n\n<b>       t - Tasking (requests/orders)</b>\nEvents in this category are generalized requests for service.  These may be used to request for data collection, request mesuration of a specific object, order an asset to take action against a specific point.  Generally, the \"details\" entity will identify the general or specific entity being tasked.\n<ul>\n\t<li>           s - Surveillance</li>\n\t<li>           r - Relocate</li>\n\t<li>           e - Engage</li>\n\t<li>           m - Mensurate</li>\n</ul>\n\n<b>      c - Capability (applied to an area)</b>\n<ul>\n\t<li>           s - Surveillance</li>\n\t<li>           r - Rescue</li>\n\t<li>           f - Fires</li>\n\t<li>           d - Direct fires</li>\n\t<li>            i - Indirect fires</li>\n\t<li>           l - Logistics (supply)</li>\n\t<li>            f - Fuel</li>\n</ul>\n               ...\n<b>c - Communications</b>",
      "type": "string",
      "minItems": 1,
      "maxItems": 1
    },
    "uid": {
      "description": "The \"uid\" attribute is a globally unique name for this specific piece of information.\nSeveral \"events\" may be associated with one UID, but in that case, the latest (ordered by timestamp), \noverwrites all previous events for that UID.\ncan have additional information attached.\n[EventTYPE].[MACHINESENDERID].Nichname.UniqueID\ne.g. -<i>ping </i>means that this event is a ping, \n<i>GeoChat </i>indicates a chat type structure.\nThe <b>UID</b> should be in the following format: GeoChat.&lt;sender uid&gt;.&lt;recipient callsign or name of the group&gt;.&lt;random string for uniqueness&gt;.  Diverging from this format should not cause significant issues; however, the UID is used as a fallback if other information cannot be parsed from the message, so issues may still be experienced.  If uid does not contain any “.” characters, the chat room will default to “All Chat Rooms”.\nGeoChat.ANDROID-7C:91:22:E8:6E:4D.DIPPER.44bf77cd-289e-4ea4-8756-ce295de168ca",
      "type": "integer",
      "minItems": 1,
      "maxItems": 1
    },
    "version": {
      "description": "Schema version of this event instance (e.g. 2.0)",
      "type": "integer",
      "minItems": 1,
      "maxItems": 1
    }
  },
  "definitions": {
    "COT2525": {
      "type": "object",
      "description": "this class manages the types of COTS and 2525 (if possible) that are stored in the persistency.",
      "properties": {}
    },
    "MissionType": {
      "type": "string",
      "enum": [
        "CHANGE",
        "CREATE",
        "DELETE",
        "INVITE"
      ]
    },
    "PermissionTypes": {
      "type": "string",
      "enum": [
        "MISSION_DELETE",
        "MISSION_MANAGE_FEEDS",
        "MISSION_READ",
        "MISSION_SET_PASSWORD",
        "MISSION_SET_ROLE",
        "MISSION_UPDATE_GROUPS",
        "MISSION_WRITE"
      ]
    },
    "detail": {
      "type": "object",
      "description": "An optional element used to hold CoT sub-schema. Detail has no special properties.\n<b>   Detail entities...</b>\n  The \"detail\" entity is intended to carry information that is   specific to smaller communities of producers and consumers and     require more intimate knowledge of the operating domain.  For example, mesurated \"target\" events may come from dramatically     different sources and need to propagate dramatically different     \"detail\" information.  A close-air-support mission will augment     target details with initial point and callsign details to     facilitate coordination of weapon delivery.  In contrast, a mission planning system may augment planned targets with target     catalog information and weapon fuzing requirements.  Because the \"details\" portion of the event are of interest only to a subset of subscribers, that entity may be mentioned by reference     when the event is communicated.  This reduces the congestion when events are transmitted over bandwidth limited links and also     prevents the retransmission of static data elements.",
      "properties": {
        "mission": {
          "$ref": "#/definitions/mission",
          "minItems": 0,
          "maxItems": 1
        }
      }
    },
    "mission": {
      "type": "object",
      "description": "the main class representing a Mission",
      "properties": {
        "authorUid": {
          "type": "var",
          "minItems": 1,
          "maxItems": 1
        },
        "name": {
          "description": "the name of the mission",
          "type": "var",
          "minItems": 1,
          "maxItems": 1
        },
        "role": {
          "$ref": "#/definitions/role",
          "minItems": 1,
          "maxItems": 1
        },
        "token": {
          "description": "JSON Web Token (JWT).\nA JWT is composed of three parts:\n\nHeader: The header typically consists of two parts: the type of the token, which is JWT, and the signing algorithm being used, such as HMAC SHA256 or RSA.\n\nPayload: The second part of the token is the payload, which contains the claims. Claims are statements about an entity (typically, the user) and additional data. There are three types of claims: registered, public, and private claims.\n\nSignature: To create the signature part you have to take the encoded header, the encoded payload, a secret, the algorithm specified in the header, and sign that.",
          "type": "integer",
          "minItems": 1,
          "maxItems": 1
        },
        "tool": {
          "description": "the tool used to create this Mission or the context (goven by the COT)",
          "type": "var",
          "minItems": 1,
          "maxItems": 1
        },
        "type": {
          "description": "Types of mission changes: Missions, and Mission content. Content changes will specify either a hash or uid, not both",
          "$ref": "#/definitions/MissionType",
          "minItems": 1,
          "maxItems": 1
        }
      }
    },
    "permission": {
      "type": "object",
      "properties": {
        "permissions": {
          "$ref": "#/definitions/permissions",
          "minItems": 1,
          "maxItems": 1
        },
        "type": {
          "$ref": "#/definitions/PermissionTypes",
          "minItems": 1,
          "maxItems": 1
        }
      }
    },
    "permissions": {
      "type": "object",
      "properties": {
        "permission": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/permission"
          }
        }
      }
    },
    "point": {
      "type": "object",
      "properties": {
        "ce": {
          "description": "Circular area around the point defined by lat and lon fields in meters.  Although named ce, this field is intended to define a circular area around the event point, not necessarily an error (e.g. Describing a reservation area is not an \"error\").  \n\nIf it is appropriate for the \"ce\" field to represent an error value (e.g. event describes laser designated target), the value will represent the one sigma point for a zero mean  normal (Guassian) distribution.",
          "type": "number",
          "minItems": 1,
          "maxItems": 1
        },
        "hae": {
          "description": "Height above Ellipsoid based on WGS-84 ellipsoid (measured in meters) \nHAE acronym for Height above Ellipsoid based on WGS-84 ellipsoid (measured in meters).",
          "type": "number",
          "minItems": 1,
          "maxItems": 1
        },
        "lat": {
          "description": "Latitude referred to the WGS 84 ellipsoid in degrees",
          "type": "number",
          "minItems": 1,
          "maxItems": 1
        },
        "le": {
          "description": "Linear Error in meters associated with the HAE field. Although named le, this field is intended to define a height range about the event point, not necessarily an error. This field, along with the ce field allow for the definition of a cylindrical volume about the point. If it is appropriate for the \"le\" field to represent an error (e.g. event describes laser designated target), the value will represent the one sigma point for a zero mean normal (Guassian) distribution.\nA height range about the event point in meters associated with the HAE field. When used to represent error, the value represents the one sigma point for a zero mean normal (Gaussian) distribution.",
          "type": "number",
          "minItems": 1,
          "maxItems": 1
        },
        "lon": {
          "description": "Longitude referred to the WGS 84 in degrees",
          "type": "number",
          "minItems": 1,
          "maxItems": 1
        }
      }
    },
    "role": {
      "type": "object",
      "properties": {
        "permissions": {
          "$ref": "#/definitions/permissions",
          "minItems": 1,
          "maxItems": 1
        }
      }
    }
  }
}

update all controllers to use the sync_action_mapper to execute sub requests

  • sync_action_mapper argument to default facade
  • add sync_action_mapper argument to all facade implementations
  • add sync_action_mapper None value to component registration
    this will make component development much easier and more intuitive as execute_sub_action calls can then be made to external comopnents

Fix OID parsing and serialization

Description

The ObjectId is used to uniquely identify each object. It is used in it's serialized form as the primary key for all database tables in the generator. The current issue is that every character of the oid string representation is delimited by a : which is pretty annoying for users and unconventional.

define service startup sequence

implement a DigitalPy starting point that FTS is inheriting from. FTS must only start FTS services and allocate components

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.