Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[controller/feature] Add DeviceGroup model #203

Closed
8 tasks
nemesifier opened this issue Jun 4, 2020 · 0 comments · Fixed by #492
Closed
8 tasks

[controller/feature] Add DeviceGroup model #203

nemesifier opened this issue Jun 4, 2020 · 0 comments · Fixed by #492
Assignees

Comments

@nemesifier
Copy link
Member

nemesifier commented Jun 4, 2020

In the last 2 years several features have been requested and built (I and others have built a few of these ideas with custom openwisp modules) which could be implemented/reimplemented with the concept of grouping devices.

A group could automatically assign special templates, it could automatically assign special monitoring settings, it could provide a default location, it could allow to implement the synchronized update strategy more effectively (devices of the same group can reload special type of configurations in a synchronized fashion), a group of devices could be a mesh network so the group could automatically generate all that is needed to make the mesh network work and collect network topology information. The actual things we can do with this concept vary depending on the use case.

Another use case is that the old OpenWISP1 version had the concept of "group" for specifying group of access points that had to have a custom captive page for the public wifi service.

For all the above reasons, I think we can start adding a very simple group functionality now and then over time add more features based on the real needs we have. This way we'll only add features that we really need and avoid creeping in too many features or risk build something unnecessary.
Although instead of adding an arbitrary DB field like "captive_page", I think we should simply provide a way to define data which can be customized depending on the use case.

What we should do in this phase:

  • Add a DeviceGroup or Group model and admin (maybe we should call it DeviceGroup to avoid confusion with other models that are called Group, like django's auth.Group model), the model shall have fields like (organization, using OrgMixin), name, description, meta_data, created, modified.
  • Add an optional "group" field to Device, the field should be a ForeignKey to DeviceGroup.
  • Emit a signal when the group field of a device is change and document the new signal.
  • Add the group relation to the DeviceAdmin class, using the django admin autocomplete feature.
  • Add a setting which allows to define the schema for DeviceGroup.meta_data and document it.
  • Ensure meta_data field is JSON formatted field which will leverage the work we did with JSON schema to show the UI, by default the schema will be empty and allow any property so the user can add what they need.
  • Both adminstrators and operators user types shall be able to edit config.Group.
  • Add group REST API list and detail endpoints, eg: /api/v1/controller/group/, /api/v1/controller/group/{id}/, authentication and permission checks should be consistent with the REST API endpoints added recently in [feature] REST API for main controller features #379 #386 and the ones being added in [api] Rest API for PKI app #455.
@nemesifier nemesifier changed the title [controller/feature] Add category/group [controller/feature] Add category/group Jun 4, 2020
@nemesifier nemesifier changed the title [controller/feature] Add category/group [controller/feature] Add group Jun 13, 2021
@nemesifier nemesifier changed the title [controller/feature] Add group [controller/feature] Add DeviceGroup model Jun 13, 2021
pandafy added a commit that referenced this issue Jun 15, 2021
A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup contains metadata about group of deivces in form of JSON.
JSONSchema can be set systemwide for validation of entered metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Closes #203
pandafy added a commit that referenced this issue Jun 15, 2021
A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup contains metadata about group of deivces in form of JSON.
JSONSchema can be set systemwide for validation of entered metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Closes #203
pandafy added a commit that referenced this issue Jun 15, 2021
A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup contains metadata about group of deivces in form of JSON.
JSONSchema can be set systemwide for validation of entered metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Closes #203
pandafy added a commit that referenced this issue Jun 15, 2021
A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup contains metadata about group of deivces in form of JSON.
JSONSchema can be set systemwide for validation of entered metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Closes #203
pandafy added a commit that referenced this issue Jul 5, 2021
A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup contains metadata about group of deivces in form of JSON.
JSONSchema can be set systemwide for validation of entered metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Closes #203
nemesifier pushed a commit that referenced this issue Jul 15, 2021
A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup can contain metadata about group of devices in JSON format.
JSONSchema can be set systemwide for validating and building the UI users will use to fill the metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Implements and closes #203
pandafy pushed a commit to pandafy/openwisp-controller that referenced this issue Apr 7, 2022
- Chnaged the endpoints pattern
- Removed tests for `DeviceLocation` endpoints
- Updated docs with new pattern of endpoints

[api] Updated the `devicelocation` view in `GEO` app endpoint

[api] Added the delete option for the `device_location` endpoint

[docs] Added `delete` in the device location API documentation

[fix] Context variable follows template order openwisp#484

If two or more applied templates have "default_values" with same keys,
then the context variables of the template with comes later in order
will be used.

Fixes openwisp#484

Co-authored-by: Federico Capoano <[email protected]>

[feature] Added support for ED25519 SSH keys

Additionally shows a validation error if the private key
being inserted during credential creation is invalid or
not supported (supporting only RSA and ED25519 since they're
the widely accepted secure algorithms).

[feature] Allow searching for address in Device Admin

[change] Execute credentials auto_add in the background openwisp#479

Closes openwisp#479

[feature] Added device groups openwisp#203

A group can be specified for devices, i.e. DeviceGroup.
DeviceGroup can contain metadata about group of devices in JSON format.
JSONSchema can be set systemwide for validating and building the UI users will use to fill the metadata.

Added REST API endpoint for listing, creating and retrieving DeviceGroups.

Implements and closes openwisp#203

[feature] Added connection app REST API  openwisp#464

Closes openwisp#464

[deps] Increased min django-flat-json version to 0.1.3 openwisp#502

Fixes openwisp#502

[chores] Admin improvements for groups

- added group filter in device list
- added description and meta_data to search_fields

[feature] Added REST API for PKI app (certs and CAs) openwisp#462

Implements and closes openwisp#462

[feature] Add API endpoint to return device group info based on the certificate common name openwisp#491

- [change!] Common name and Organization unique together for Cert and Ca models
- [deps] Added shortuuid~=1.0.1
- [feature] Added API endpoint to return device group using certificate common name openwisp#491

Closes openwisp#491

[fix] Fixed JSONSchema editor select2 fields getting disabled openwisp#505

The issue arose because the JSON Schema library uses selec2('enable') for
enabling or disabling select2 fields. According to the "Migrating from 3.5" section
in select2 documentation, select2('enable') has been deprecated.
The solution is to override the methods using it to simply modify
select2.disabled property.

Closes openwisp#505

[fix] Fixed advanced editor quirks openwisp#506

Bugs fixed:
- Executing a command, would raise a 'Invalid JSON' alert in the
  advance mode of the configuration even if the JSON is valid
- The device page deals with two schema and the container for
  advance mode editor used 'id="advanced_editor"'. Fetching the advance
  mode editor using the 'id' always returned the first occurence
  (advance mode editor of configuration). This used to create multiple
  advance mode editor DOM elements inside the container all of which
  had their own event listeners. Hence, full screen toggling was not
  working properly.

Closes openwisp#506

[fix] JSONSchema Editor maxlength modification handle non-existent schema objects openwisp#353

Related to openwisp#353

[change] Switch to new nav menu openwisp#472

Closes openwisp#472

[api] Re-introduced `DeviceLocation` endpoints

[api] Upgraded existing Device Location endpoint

[tests] Added tests for device location endpoint

[change] Minor code improvements

[tests] Added tests for changing location detail and coordinates

[api] Added support of creating a floorplan along with location

[api] Added update method to `Location` serializer

[api] Added support of creating/updating floorplan with location

[change] Added option to change device location detail with token

[tests] Added tests for create location endpoint of indoor type

[change] Minor bug fix and added tests for the endpoints

[tests] Minor typo fix

[change] Improved docs & optimized number of queries

[docs] Improvement in the docs related to devicelocation endpoint

[api] Fixed device location endpoint added TokenAuthentication

[docs] Updated info on how to use the device location endpoints

[change] Added tests and improved devicelocation permission logic

[change] Fixed the validation error raised due to image format

[change!] Removed the creation of devicelocation with GET request

[fix] Included PKI API URLs to `controller.urls` file openwisp#511

Closes openwisp#511

[chores] Ensure Device.group.verbose_name is lowercase for consistency

[fix] Fixed 0010 pki migration when cert serial_number is None

[fix] CommandFailedException: ensure error message is always present

If a command with suppressed output failed, CommandFailedException
would be raised with an emptry string as argument, which makes
debugging issues really hard.

In this cases we shall instantiate the exception with the same
message passed to the log.

[fix/tests] TestSsh: fixed assert_has_calls not being called

I found out these assertions were not being called while working
on the previous commit.

[fix] Registered menu group in connection app openwisp#512

Closes openwisp#512

[fix] Fixed new theme issues in config editor and command inputs

Co-authored-by: Federico Capoano <[email protected]>

[test] Fixed failing tests due to openwisp-utils menu changes

Co-authored-by: Pedro Peña <[email protected]>

[docs] Updated docs about limitations of device location endpoint

[tests] Fixed tests causing CI to fail
@nemesifier nemesifier moved this to Done in Roadmap Aug 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants