Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

App environment:
- Meteor Javascript application: https://www.meteor.com/  

Basic requirements for this challenge:
- Fix existing to follow updated Data Model Descriptor and need fix all data export sending correctly to related XML files
- Must not breaking existing code implementation
- Improve existing unit testing to cover all flows
- Must testing on Windows 7 and Windows 10

Thor PDU Mass Commissioning - Overview
A PDU (Power Distribution Unit) is a device fitted with multiple outputs designed to distribute electric power, especially to racks of computers and networking equipment located within a data center.  The PDU Mass Commissioning tool that we are designing will allow users to create configuration files and networking capabilities for PDUs in a system.  The app will allow for the necessary configuration parameters needed for operation within the system.  Once all of the configuration parameters have been set within the app, users will be able to "export" the files to a USB drive, which will be plugged into the PDUs to be commissioned.

The PDU Mass Commissioning tool will be a simple user interface that allows customers to create all of the necessary configuration files to configure all of their PDUs. The app will have a variable number of input fields for all the configuration parameters in which users will enter their desired configurations. Once they have entered all of the configuration parameters they will click "export" and the application will build the configuration file hierarchy into a chosen USB drive.

About PDU Mass Commissioning App
- PDUs (Power Distribution Units) equipment have several parameters which need to be configured before the first use
- The Mass commissioning application to be developed aims at expediting  the commissioning process in case of large amounts of PDUs to be configured (from 20 to several hundreds of units)
- Targeted audience: industrial users

Basic process flow
- The user defines the value of the configuration parameters he wants to apply to the PDU in the PDU mass deployment Software tool (to be developed during the Topcoder challenge)
- The different parameters are exported to a standard USB key in the form of pre-defined configuration files (the files naming convention and file hierarchy must be respected)
- The user plugs the USB flash drive into the PDU(s) to be commissioned
- The PDU automatically detects the correctly formatted USB flash drive and reconfigures itself with settings found on the USB flash drive

Technology Stack
- Meteor JS
- Angular Meteor Integration
- Meteor desktop (https://github.com/wojtkowiak/meteor-desktop)

Deployment environment requirements
IMPORTANT: Your submission need build as desktop native app that will working on these required OS:
- Windows 7
- Windows 10

Latest App version:
https://gitlab.com/thor-pducomm/meteor-app  > Use dev branch
Check .desktop-installer folder for the app demo. Please use the latest version.

Challenge Individual Requirements
A). Data Model Descriptor Fixes

- We need improve existing our current Data Model Descriptor to follow client expected format
- Current app Data Model Descriptor placed here (Data-model-descriptor_*.json) https://gitlab.com/thor-pducomm/meteor-app/tree/dev/public  
- The updated  Data Model Descriptor must not breaking the app and render correctly for all languages
- Form element need render based on all attributes of related data Data Model Descriptor
- Check this file for the latest Data Model Descriptor: https://drive.google.com/open?id=1aSCic_4cfYLBm75AK65GgXsL_h7fexHr
- This is common structure for the expected format. Read detail descriptions for each row below:

 {
     "category_id": "2.1.1",
"label": "Login",
             "description": "SuperAdmin login",
             "type": "STRING",
             "readOnly": false,
             "basic": true,
             "cyphered": false,
             "configuration":
             {
               "PN pattern": ".*",
                "count": 1
             },
                "data format":
             {
              "default": "",
              "min": 5,
              "max": 31,
               "pattern": "^(([a-zA-Z]\\:)|(\\\\))(\\\\{1}|((\\\\{1})[^\\\\]([^/:*?<>\\\"|]*))+)$"
              },
                "export":
               {
                "file": "ConfigurationData",
                "path": "System.login"
               }
},

Notes:
1). category_id

- This label indicated which category the object is belong to.
-- Overview = 1
-- General Settings = 2
-- Assets Management = 3
-- Export = 4
-- After Commissioning = 5
- Need display correct numbering for the children and sub-children, for example 2.1.1.
- Fix all incorrect numbering for all sections

2). label
- This is for label of input

3).  description
- This is for description of input

4). type
- There are 3 types right now based on client Data Model Descriptor
"type":"STRING", > This will be render as text input
"type":"BOOL", > This will be render as radio button/checkboxes
"type":"List:-43200,-39600,-36000,-32400,-28800,-25200,-21600,-18000,-16200,-1440
                  0,-12600,-10800,-7200,-3600,0,3600,7200,10800,12600,14400,16200,18000,1980
                  0,21600,23400,25200,28800,32400,34200,36000,39600,43200", > this will be render as dropdown
- This “type” attributes will linked to the “data format” explained. Make sure they linked
- There are more type on our current app, as possible need form input elements configured from Data Model Descriptor

5). readOnly
- this attribute to define related form input readonly or not
- Use grey color for readonly and black color if not readonly

6). basic
- This is to indicated field show up in Basic OR Expert mode
- Fix current attribute from expertShow to basic

7). cyphered
- This attributes indicated value must be encrypted or not
- Follow this technical document to implement the encrypted value: https://drive.google.com/file/d/1mC0Gb3-ZE71kCUBIhhLKDiQyQsj23xPT/view?usp=sharing

8). Configuration
- PN pattern: the object concerns all PDU Part Number (“.*”) ? or only specific PDU Part Number (“EMA107-10” for example) ?
- For the PN pattern, the user should have the possibility to enter its PDU part number in Thor application. Then the thor Application will compare the "PN pattern" of the Data model with the PN set by the user, and according display or not he corresponding object.
- We may have also the pattern "EMA*" or "SW*" etc.
- Add new “ePDU Part Number” input on “Asset Management” >  “General”
- ePDU will be linking from PN pattern parameters
- Make sure PDU Part only return correct values based on object values.
- count will represent the number of field need generated on the app.
- This is need apply to all parameters
- For example, we need create some input field based on the count on the Eaton app.
For example on ConfigurationData: <OBJECT name="System.User[x].Login">user1|user2|Group3|user4|user5|user6|user7|user8</OBJECT>
There will be 8 Login text inputs rendered in the application.
- on the data descriptor, count will always related to the [x] value. Check below for example:

"System.Network.SNMP.V1.User[x].UserName":{
                  "type":"STRING",
                  "file":"ConfigurationData",
                  "configuration":[
                    {
                      "PN pattern":".*",
                      "Count": 8
                    },

                  ],
                  "data format":{
                    "default":"public|private",
                    "min":"0",
                    "max":"24",
                    "pattern":""
                  }
                },

- When this value imported to ConfigurationData file, the values need based on count. For example:

<OBJECT name="System.User[x].Login">user1|user2|Group3|user4|user5|user6|user7|user8</OBJECT>
- Some [x] values use similar number. Check the details below.

9). data format
- default: This is the default value
- min: This is the min value
- max: This is the max value
- pattern: pattern of value (authorized format/characters)
- Note: data format will be different based on type attributes
- There are more type on our current app, as possible need form input elements configured from Data Model Descriptor

10). "export":
- file: Each data need saved to the correct XML files (ConfigurationData, ConfigurationPdu or ConfigurationPrivateData)
- path: The xml attribute to use in the XML file
- IMPORTANT: Check this file for the latest Data Model Descriptor from client: https://drive.google.com/open?id=1aSCic_4cfYLBm75AK65GgXsL_h7fexHr
- IMPORTANT: Follow the field naming textcase and must use the exacts field name from client: https://docs.google.com/document/d/1VJPObcFh-UCyJW28GKHg--Mkyh1NlOrx2dJk-nfGTrg/edit?usp=sharing

B). Generated XML Files Fixes
- User can generate the XML files after made some edits on Asset Management page and then Export files to USB
- Here are current generated XML files examples: https://drive.google.com/open?id=16uVcvG81aqmgY8nWPc6d6b531OH6i5DL
- We need replace all of these XML files to follow exact client XML files: https://drive.google.com/open?id=1NnY5RYrvF8bp_F8ulH3uT3vpUZHy-QBc
- IMPORTANT: all labels on XML files need follow client format with no differences
- You must keep the same text case, eg: System.Login, System.Password
- Data values need coming from current app
- Target of xml attribute to use is based on export > path. Check data model descriptor above.
- Each data need saved to correct XML (ConfigurationData, ConfigurationPdu or ConfigurationPrivateData)
- Let us know if need some clarification.

C). Unit testing and Code Coverage
- Right now the application support the unit testing and code coverage
- For this challenge we need all pages/functionalities covered.
- Fix any existing issues and improve unit testing to be updated based on latest functionaliities
- Let us know if you have any questions/clarifications about the flow
 

Final Submission Guidelines

What To Submit?
- Challenge winner need create Merge Request to our repo against dev branch
- Make sure your submission have not error conflicts

Deliverables
- All source code that implement the challenge requirements.
- README in markup language

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30088388