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

[chore][scehams] - make it a go pkg #40

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions go.mod
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make this meshery/schemas?

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module github.com/layer5io/meshery/schemas

go 1.21
6 changes: 6 additions & 0 deletions schemas/configuration.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package schemas

import "embed"

//go:embed external
var Schemas embed.FS
108 changes: 85 additions & 23 deletions schemas/external/ui/catalog/designImport.json
Original file line number Diff line number Diff line change
@@ -1,68 +1,130 @@
{
"title": "Upload Design File",
"//playground": "https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6eyJuYW1lIjoiVW50aXRsZWQgRGVzaWduIiwiZGVzaWduVHlwZSI6Ikt1YmVybmV0ZXMgTWFuaWZlc3QiLCJ1cGxvYWRUeXBlIjoiVVJMIEltcG9ydCIsImZpcnN0TmFtZSI6IkNodWNrIiwibGFzdE5hbWUiOiJOb3JyaXMiLCJhZ2UiOjc1LCJiaW8iOiJSb3VuZGhvdXNlIGtpY2tpbmcgYXNzZXMgc2luY2UgMTk0MCIsInBhc3N3b3JkIjoibm9uZWVkIiwidGVsZXBob25lIjoiMS04MDAtS0lDS0FTUyJ9LCJzY2hlbWEiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJEZXNpZ24gZmlsZSBuYW1lIiwiZGVmYXVsdCI6IlVudGl0bGVkIERlc2lnbiIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiIsImRlc2NyaXB0aW9uIjoiUHJvdmlkZSBhIG5hbWUgZm9yIHlvdXIgZGVzaWduIGZpbGUuIFRoaXMgbmFtZSB3aWxsIGhlbHAgeW91IGlkZW50aWZ5IHRoZSBmaWxlIG1vcmUgZWFzaWx5LiBZb3UgY2FuIGFsc28gY2hhbmdlIHRoZSBuYW1lIG9mIHlvdXIgZGVzaWduIGFmdGVyIGltcG9ydGluZyBpdC4ifSwiZGVzaWduVHlwZSI6eyJ0aXRsZSI6IlNlbGVjdCB0aGUgZGVzaWduIHR5cGUiLCJlbnVtIjpbIkhlbG0gQ2hhcnQiLCJLdWJlcm5ldGVzIE1hbmlmZXN0IiwiRG9ja2VyIENvbXBvc2UiLCJNZXNoZXJ5IERlc2lnbiJdLCJkZWZhdWx0IjoiTWVzaGVyeSBEZXNpZ24iLCJ4LXJqc2YtZ3JpZC1hcmVhIjoiMTIiLCJkZXNjcmlwdGlvbiI6IlNlbGVjdCB0aGUgdHlwZSBvZiBkZXNpZ24geW91IGFyZSB1cGxvYWRpbmcuIFRoZSAnRGVzaWduIFR5cGUnIGRldGVybWluZXMgdGhlIGZvcm1hdCwgc3RydWN0dXJlLCBhbmQgY29udGVudCBvZiB0aGUgZmlsZSB5b3UgYXJlIHVwbG9hZGluZy4gQ2hvb3NlIHRoZSBhcHByb3ByaWF0ZSBkZXNpZ24gdHlwZSB0aGF0IG1hdGNoZXMgdGhlIG5hdHVyZSBvZiB5b3VyIGZpbGUuIENoZWNrb3V0IGh0dHBzOi8vZG9jcy5tZXNoZXJ5LmlvL2d1aWRlcy9tZXNoZXJ5LWRlc2lnbiB0byBsZWFybiBtb3JlIGFib3V0IGRlc2lnbnMifX0sImFsbE9mIjpbeyJpZiI6eyJwcm9wZXJ0aWVzIjp7ImRlc2lnblR5cGUiOnsibm90Ijp7ImNvbnN0IjoiSGVsbSBDaGFydCJ9fX19LCJ0aGVuIjp7InByb3BlcnRpZXMiOnsidXBsb2FkVHlwZSI6eyJ0aXRsZSI6IlNlbGVjdCB0aGUgdXBsb2FkIG1ldGhvZCIsImVudW0iOlsiRmlsZSBVcGxvYWQiLCJVUkwgSW1wb3J0Il0sImRlZmF1bHQiOiJGaWxlIFVwbG9hZCIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiIsImRlc2NyaXB0aW9uIjoiQ2hvb3NlIHRoZSBtZXRob2QgeW91IHByZWZlciB0byB1cGxvYWQgeW91ciBkZXNpZ24gZmlsZS4gU2VsZWN0ICdGaWxlIFVwbG9hZCcgaWYgeW91IGhhdmUgdGhlIGZpbGUgb24geW91ciBsb2NhbCBzeXN0ZW0sIG9yICdVUkwgSW1wb3J0JyBpZiB5b3UgaGF2ZSB0aGUgZmlsZSBob3N0ZWQgb25saW5lLiJ9fSwiYWxsT2YiOlt7ImlmIjp7InByb3BlcnRpZXMiOnsidXBsb2FkVHlwZSI6eyJjb25zdCI6IkZpbGUgVXBsb2FkIn19fSwidGhlbiI6eyJwcm9wZXJ0aWVzIjp7ImZpbGUiOnsidHlwZSI6InN0cmluZyIsImZvcm1hdCI6ImZpbGUiLCJkZXNjcmlwdGlvbiI6IkJyb3dzZSB0aGUgZGVzaWduIGZpbGUgZnJvbSB5b3VyIGZpbGUgc3lzdGVtIiwieC1yanNmLWdyaWQtYXJlYSI6IjEyIn19LCJyZXF1aXJlZCI6WyJmaWxlIl19fSx7ImlmIjp7InByb3BlcnRpZXMiOnsidXBsb2FkVHlwZSI6eyJjb25zdCI6IlVSTCBJbXBvcnQifX19LCJ0aGVuIjp7InByb3BlcnRpZXMiOnsidXJsIjp7InR5cGUiOiJzdHJpbmciLCJmb3JtYXQiOiJ1cmkiLCJ0aXRsZSI6IlVSTCIsImRlc2NyaXB0aW9uIjoiUHJvdmlkZSB0aGUgVVJMIG9mIHRoZSBkZXNpZ24gZmlsZSB5b3Ugd2FudCB0byBpbXBvcnQuIFRoaXMgc2hvdWxkIGJlIGEgZGlyZWN0IFVSTCB0byB0aGUgZmlsZSwgZm9yIGV4YW1wbGU6IGh0dHBzOi8vcmF3LmdpdGh1Yi5jb20veW91ci1kZXNpZ24tZmlsZS55YW1sIiwieC1yanNmLWdyaWQtYXJlYSI6IjEyIn19LCJyZXF1aXJlZCI6WyJ1cmwiXX19XSwicmVxdWlyZWQiOlsidXBsb2FkVHlwZSJdfX0seyJpZiI6eyJwcm9wZXJ0aWVzIjp7ImRlc2lnblR5cGUiOnsiY29uc3QiOiJIZWxtIENoYXJ0In19fSwidGhlbiI6eyJwcm9wZXJ0aWVzIjp7InVybCI6eyJ0eXBlIjoic3RyaW5nIiwiZm9ybWF0IjoidXJpIiwidGl0bGUiOiJVUkwiLCJkZXNjcmlwdGlvbiI6IlByb3ZpZGUgdGhlIFVSTCBvZiB0aGUgZGVzaWduIGZpbGUgeW91IHdhbnQgdG8gaW1wb3J0LiBUaGlzIHNob3VsZCBiZSBhIGRpcmVjdCBVUkwgdG8gdGhlIGZpbGUsIGZvciBleGFtcGxlOiBodHRwczovL3Jhdy5naXRodWIuY29tL3lvdXItZGVzaWduLWZpbGUueWFtbCIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiJ9fSwicmVxdWlyZWQiOlsidXJsIl19fSx7InJlcXVpcmVkIjpbImRlc2lnblR5cGUiXX1dfSwidWlTY2hlbWEiOnsidXBsb2FkVHlwZSI6eyJ1aTp3aWRnZXQiOiJyYWRpbyJ9LCJ1aTpvcmRlciI6WyJkZXNpZ25UeXBlIiwidXBsb2FkVHlwZSIsIm5hbWUiLCJmaWxlIiwidXJsIl19LCJ0aGVtZSI6ImRlZmF1bHQiLCJsaXZlU2V0dGluZ3MiOnsic2hvd0Vycm9yTGlzdCI6InRvcCIsInZhbGlkYXRlIjpmYWxzZSwiZGlzYWJsZWQiOmZhbHNlLCJub0h0bWw1VmFsaWRhdGUiOmZhbHNlLCJyZWFkb25seSI6ZmFsc2UsIm9taXRFeHRyYURhdGEiOmZhbHNlLCJsaXZlT21pdCI6ZmFsc2UsImV4cGVyaW1lbnRhbF9kZWZhdWx0Rm9ybVN0YXRlQmVoYXZpb3IiOnsiYXJyYXlNaW5JdGVtcyI6InBvcHVsYXRlIiwiZW1wdHlPYmplY3RGaWVsZHMiOiJwb3B1bGF0ZUFsbERlZmF1bHRzIn19fQ==",
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Give your design file a name",
"title": "Design file name",
"default": "Untitled Design",
"x-rjsf-grid-area" : "12"
"x-rjsf-grid-area": "12",
"description": "Provide a name for your design file. This name will help you identify the file more easily. You can also change the name of your design after importing it."
},
"uploadType": {
"title": "Select the Upload Method",
"designType": {
"title": "Select the design type",
"enum": [
"File Upload",
"URL Upload"
"Helm Chart",
"Kubernetes Manifest",
"Docker Compose",
"Meshery Design"
],
"default": "File Upload",
"x-rjsf-grid-area" : "12"
"default": "Meshery Design",
"x-rjsf-grid-area": "12",
"description": "Select the type of design you are uploading. The 'Design Type' determines the format, structure, and content of the file you are uploading. Choose the appropriate design type that matches the nature of your file. Checkout https://docs.meshery.io/guides/meshery-design to learn more about designs"
}
},
"allOf": [
{
"if": {
"properties": {
"uploadType": {
"const": "File Upload"
"designType": {
"not": {
"const": "Helm Chart"
}
}
}
},
"then": {
"title": "via URL",
"properties": {
"file": {
"type": "string",
"format": "file",
"description": "Browse the design file from your file system",
"x-rjsf-grid-area" : "12"
"uploadType": {
"title": "Select the upload method",
"enum": [
"File Upload",
"URL Import"
],
"default": "URL Import",
"x-rjsf-grid-area": "12",
"description": "Choose the method you prefer to upload your design file. Select 'File Upload' if you have the file on your local system, or 'URL Import' if you have the file hosted online."
}
},
"allOf": [
{
"if": {
"properties": {
"uploadType": {
"const": "File Upload"
}
}
},
"then": {
"properties": {
"file": {
"type": "string",
"format": "file",
"description": "Browse the design file from your file system",
"x-rjsf-grid-area": "12"
}
},
"required": [
"file"
]
}
},
{
"if": {
"properties": {
"uploadType": {
"const": "URL Import"
}
}
},
"then": {
"properties": {
"url": {
"type": "string",
"format": "uri",
"title": "URL",
"description": "Provide the URL of the design file you want to import. This should be a direct URL to the file, for example: https://raw.github.com/your-design-file.yaml",
"x-rjsf-grid-area": "12"
}
},
"required": [
"url"
]
}
}
],
"required": [
"file"
"uploadType"
]
}
},
{
"if": {
"properties": {
"uploadType": {
"const": "URL Upload"
"designType": {
"const": "Helm Chart"
}
}
},
"then": {
"title": "via URL",
"properties": {
"url": {
"type": "string",
"format": "uri",
"title": "URL",
"description": "raw url of the design file, example: https://raw.github.com/...",
"x-rjsf-grid-area" : "12"
"description": "Provide the URL of the design file you want to import. This should be a direct URL to the file, for example: https://raw.github.com/your-design-file.yaml",
"x-rjsf-grid-area": "12"
}
},
"required": [
"url"
]
}
},
{
"required": [
"designType"
]
}
]
}
2 changes: 1 addition & 1 deletion schemas/external/ui/catalog/uiSchemaDesignImport.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"uploadType": {
"ui:widget": "radio"
},
"ui:order" : ["name", "uploadType", "file", "url"]
"ui:order" : ["designType", "uploadType", "name", "file", "url"]
}
11 changes: 11 additions & 0 deletions schemas/external/ui/catalog/uiSchemaEnvironment.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"organization": {
"ui:disabled": false,
"ui:widget": "select"
},
"ui:order": [
"organization",
"name",
"description"
]
}
11 changes: 11 additions & 0 deletions schemas/external/ui/catalog/uiSchemaWorkspace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"organization": {
"ui:disabled": false,
"ui:widget": "select"
},
"ui:order": [
"organization",
"name",
"description"
]
}
31 changes: 31 additions & 0 deletions schemas/external/ui/catalog/workspace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"//playground": "https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6e30sInNjaGVtYSI6eyJ0aXRsZSI6IkVudmlyb25tZW50IiwicHJvcGVydGllcyI6eyJkZXNjcmlwdGlvbiI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaXB0aW9uIG9mIHRoZSBFbnZpcm9ubWVudCIsImZvcm1hdCI6InRleHRhcmVhIiwidGl0bGUiOiJEZXNjcmlwdGlvbiIsInR5cGUiOiJzdHJpbmciLCJ4LXJqc2YtZ3JpZC1hcmVhIjoiMTIifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBuYW1lIG9mIEVudmlyb25tZW50IiwidGl0bGUiOiJOYW1lIiwidHlwZSI6InN0cmluZyIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiJ9LCJvcmdhbml6YXRpb24iOnsidHlwZSI6InN0cmluZyIsInRpdGxlIjoiT3JnYW5pemF0aW9uIiwiZW51bSI6WyIxMTExMjIiXSwiZW51bU5hbWVzIjpbXSwieC1yanNmLWdyaWQtYXJlYSI6IjEyIn19LCJ0eXBlIjoib2JqZWN0IiwicmVxdWlyZWQiOlsibmFtZSIsIm9yZ2FuaXphdGlvbiJdfSwidWlTY2hlbWEiOnsib3JnYW5pemF0aW9uIjp7InVpOmRpc2FibGVkIjpmYWxzZSwidWk6d2lkZ2V0Ijoic2VsZWN0In0sInVpOm9yZGVyIjpbIm9yZ2FuaXphdGlvbiIsIm5hbWUiLCJkZXNjcmlwdGlvbiJdfSwidGhlbWUiOiJkZWZhdWx0IiwibGl2ZVNldHRpbmdzIjp7InNob3dFcnJvckxpc3QiOiJ0b3AiLCJ2YWxpZGF0ZSI6ZmFsc2UsImRpc2FibGVkIjpmYWxzZSwibm9IdG1sNVZhbGlkYXRlIjpmYWxzZSwicmVhZG9ubHkiOmZhbHNlLCJvbWl0RXh0cmFEYXRhIjpmYWxzZSwibGl2ZU9taXQiOmZhbHNlLCJleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIjp7ImFycmF5TWluSXRlbXMiOiJwb3B1bGF0ZSIsImVtcHR5T2JqZWN0RmllbGRzIjoicG9wdWxhdGVBbGxEZWZhdWx0cyJ9fX0=",
"title": "Workspace",
"properties": {
"description": {
"description": "Description of the Workspace",
"format": "textarea",
"title": "Description",
"type": "string",
"x-rjsf-grid-area": "12"
},
"name": {
"description": "The name of Workspace",
"title": "Name",
"type": "string",
"x-rjsf-grid-area": "12"
},
"organization": {
"type": "string",
"title": "Organization",
"enum": [],
"enumNames": [],
"x-rjsf-grid-area": "12"
}
},
"type": "object",
"required": [
"name",
"organization"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"//playground": "https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6eyJmaXJzdE5hbWUiOiJDaHVjIiwibGFzdE5hbWUiOiJOb3JyaXMiLCJhZ2UiOjc1LCJiaW8iOiJSb3VuZGhvdXNlIGtpY2tpbmcgYXNzZXMgc2luY2UgMTk0MCIsInBhc3N3b3JkIjoibm9uZWVkIiwidGVsZXBob25lIjoiMS04MDAtS0lDS0FTUyJ9LCJzY2hlbWEiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJOYW1lIiwibWluTGVuZ3RoIjoxLCJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIG5ldyBIZWxtIHJlcG8gY29ubmVjdGlvbiJ9LCJkZXNjcmlwdGlvbiI6eyJ0eXBlIjoic3RyaW5nIiwidGl0bGUiOiJEZXNjcmlwdGlvbiIsImZvcm1hdCI6InRleHRhcmVhIiwiZGVzY3JpcHRpb24iOiJEZXNjcmlwdGlvbiBvZiB0aGlzIEhlbG0gcmVwbyBjb25uZWN0aW9uLiJ9LCJ1cmwiOnsidHlwZSI6InN0cmluZyIsInRpdGxlIjoiVVJMIiwiZm9ybWF0IjoidXJpIiwiZGVzY3JpcHRpb24iOiJUaGUgVVJMIG9mIHRoZSBIZWxtIHJlcG9zaXRvcnkgd2hlcmUgdGhlIGNoYXJ0cyBhcmUgaG9zdGVkLiJ9fSwicmVxdWlyZWQiOlsibmFtZSIsInVybCJdfSwidWlTY2hlbWEiOnsibmFtZSI6eyJ1aTpwbGFjZWhvbGRlciI6IkVudGVyIGEgbmFtZSJ9LCJkZXNjcmlwdGlvbiI6eyJ1aTp3aWRnZXQiOiJ0ZXh0YXJlYSIsInVpOnBsYWNlaG9sZGVyIjoiRW50ZXIgYSBkZXNjcmlwdGlvbiJ9LCJ1cmwiOnsidWk6cGxhY2Vob2xkZXIiOiJFbnRlciBhIFVSTCJ9fSwidGhlbWUiOiJkZWZhdWx0IiwibGl2ZVNldHRpbmdzIjp7InNob3dFcnJvckxpc3QiOiJ0b3AiLCJ2YWxpZGF0ZSI6ZmFsc2UsImRpc2FibGVkIjpmYWxzZSwibm9IdG1sNVZhbGlkYXRlIjpmYWxzZSwicmVhZG9ubHkiOmZhbHNlLCJvbWl0RXh0cmFEYXRhIjpmYWxzZSwibGl2ZU9taXQiOmZhbHNlLCJleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIjp7ImFycmF5TWluSXRlbXMiOiJwb3B1bGF0ZSIsImVtcHR5T2JqZWN0RmllbGRzIjoicG9wdWxhdGVBbGxEZWZhdWx0cyJ9fX0=",
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Name",
"minLength": 1,
"description": "A short, memorable name of the Helm repository connection.",
"x-rjsf-grid-area" : "12"
},
"description": {
"type": "string",
"title": "Description",
"format": "textarea",
"description": "An explanation as to the purpose and/or use of this Helm repository.",
"x-rjsf-grid-area" : "12"
},
"url": {
"type": "string",
"title": "URL",
"format": "uri",
"description": "The URL (must be http/s) of the Helm repository in which one or more Helm charts are hosted.",
"x-rjsf-grid-area" : "12"
}
},
"required": [
"name",
"url"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"ui:order" : ["name", "description", "url"]
}
8 changes: 6 additions & 2 deletions schemas/external/ui/environment/environment.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"//playground": "https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6eyJhcHBsaWNhdGlvblR5cGUiOiJIZWxtIENoYXJ0In0sInNjaGVtYSI6eyJ0aXRsZSI6IlVwbG9hZCBBcHBsaWNhdGlvbiBGaWxlIiwicHJvcGVydGllcyI6eyJuYW1lIjp7InR5cGUiOiJzdHJpbmciLCJ0aXRsZSI6IkdpdmUgeW91ciBhcHBsaWNhdGlvbiBmaWxlIGEgbmFtZSIsIngtcmpzZi1ncmlkLWFyZWEiOiI2In0sImFwcGxpY2F0aW9uVHlwZSI6eyJ0aXRsZSI6IlNlbGVjdCBhcHBsaWNhdGlvbiB0eXBlIiwiZW51bSI6WyJIZWxtIENoYXJ0IiwiS3ViZXJuZXRlcyBNYW5pZmVzdCIsIkRvY2tlciBDb21wb3NlIl0sImRlZmF1bHQiOiJIZWxtIENoYXJ0IiwieC1yanNmLWdyaWQtYXJlYSI6IjYifX0sImRlcGVuZGVuY2llcyI6eyJhcHBsaWNhdGlvblR5cGUiOnsib25lT2YiOlt7InByb3BlcnRpZXMiOnsiYXBwbGljYXRpb25UeXBlIjp7ImNvbnN0IjoiSGVsbSBDaGFydCJ9LCJ1cmwiOnsidHlwZSI6InN0cmluZyIsImZvcm1hdCI6InVyaSIsInRpdGxlIjoiVVJMIiwiZGVzY3JpcHRpb24iOiJyYXcgVVJMIG9mIHRoZSBhcHBsaWNhdGlvbiBmaWxlLCBleGFtcGxlOiBodHRwczovL3Jhdy5naXRodWIuY29tLy4uLiIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiJ9fSwicmVxdWlyZWQiOlsidXJsIl19LHsicHJvcGVydGllcyI6eyJhcHBsaWNhdGlvblR5cGUiOnsiY29uc3QiOiJLdWJlcm5ldGVzIE1hbmlmZXN0In19LCJvbmVPZiI6W3sidGl0bGUiOiJVUkwgVXBsb2FkIiwicHJvcGVydGllcyI6eyJ1cmwiOnsidHlwZSI6InN0cmluZyIsImZvcm1hdCI6InVyaSIsInRpdGxlIjoiVVJMIiwiZGVzY3JpcHRpb24iOiJyYXcgVVJMIG9mIHRoZSBhcHBsaWNhdGlvbiBmaWxlLCBleGFtcGxlOiBodHRwczovL3Jhdy5naXRodWIuY29tLy4uLiIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiJ9fSwicmVxdWlyZWQiOlsidXJsIl19LHsidGl0bGUiOiJGaWxlIFVwbG9hZCIsInByb3BlcnRpZXMiOnsiZmlsZSI6eyJ0eXBlIjoic3RyaW5nIiwiZm9ybWF0IjoiZGF0YS11cmwiLCJ0aXRsZSI6IkZpbGUgVXBsb2FkIiwiZGVzY3JpcHRpb24iOiJCcm93c2UgdGhlIGFwcGxpY2F0aW9uIGZpbGUgZnJvbSB5b3VyIGZpbGUgc3lzdGVtIiwieC1yanNmLWdyaWQtYXJlYSI6IjEyIn19LCJyZXF1aXJlZCI6WyJmaWxlIl19XX0seyJwcm9wZXJ0aWVzIjp7ImFwcGxpY2F0aW9uVHlwZSI6eyJjb25zdCI6IkRvY2tlciBDb21wb3NlIn19LCJvbmVPZiI6W3sicHJvcGVydGllcyI6eyJ1cmwiOnsidHlwZSI6InN0cmluZyIsImZvcm1hdCI6InVyaSIsInRpdGxlIjoiVVJMIiwiZGVzY3JpcHRpb24iOiJyYXcgVVJMIG9mIHRoZSBhcHBsaWNhdGlvbiBmaWxlLCBleGFtcGxlOiBodHRwczovL3Jhdy5naXRodWIuY29tLy4uLiIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiJ9fSwicmVxdWlyZWQiOlsidXJsIl19LHsicHJvcGVydGllcyI6eyJmaWxlIjp7InR5cGUiOiJzdHJpbmciLCJmb3JtYXQiOiJkYXRhLXVybCIsInRpdGxlIjoiRmlsZSBVcGxvYWQiLCJkZXNjcmlwdGlvbiI6IkJyb3dzZSB0aGUgYXBwbGljYXRpb24gZmlsZSBmcm9tIHlvdXIgZmlsZSBzeXN0ZW0iLCJ4LXJqc2YtZ3JpZC1hcmVhIjoiMTIifX0sInJlcXVpcmVkIjpbImZpbGUiXX1dfV19fX0sInVpU2NoZW1hIjp7ImFwcGxpY2F0aW9uVHlwZSI6eyJ1aTp3aWRnZXQiOiJyYWRpbyJ9fSwidGhlbWUiOiJtYXRlcmlhbC11aS01IiwibGl2ZVNldHRpbmdzIjp7fX0=",
"//playground": "https://rjsf-team.github.io/react-jsonschema-form/#eyJmb3JtRGF0YSI6e30sInNjaGVtYSI6eyJ0aXRsZSI6IkVudmlyb25tZW50IiwicHJvcGVydGllcyI6eyJkZXNjcmlwdGlvbiI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaXB0aW9uIG9mIHRoZSBFbnZpcm9ubWVudCIsImZvcm1hdCI6InRleHRhcmVhIiwidGl0bGUiOiJEZXNjcmlwdGlvbiIsInR5cGUiOiJzdHJpbmciLCJ4LXJqc2YtZ3JpZC1hcmVhIjoiMTIifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBuYW1lIG9mIEVudmlyb25tZW50IiwidGl0bGUiOiJOYW1lIiwidHlwZSI6InN0cmluZyIsIngtcmpzZi1ncmlkLWFyZWEiOiIxMiJ9LCJvcmdhbml6YXRpb24iOnsidHlwZSI6InN0cmluZyIsInRpdGxlIjoiT3JnYW5pemF0aW9uIiwiZW51bSI6WyIxMTExMjIiXSwiZW51bU5hbWVzIjpbXSwieC1yanNmLWdyaWQtYXJlYSI6IjEyIn19LCJ0eXBlIjoib2JqZWN0IiwicmVxdWlyZWQiOlsibmFtZSIsIm9yZ2FuaXphdGlvbiJdfSwidWlTY2hlbWEiOnsib3JnYW5pemF0aW9uIjp7InVpOmRpc2FibGVkIjpmYWxzZSwidWk6d2lkZ2V0Ijoic2VsZWN0In0sInVpOm9yZGVyIjpbIm9yZ2FuaXphdGlvbiIsIm5hbWUiLCJkZXNjcmlwdGlvbiJdfSwidGhlbWUiOiJkZWZhdWx0IiwibGl2ZVNldHRpbmdzIjp7InNob3dFcnJvckxpc3QiOiJ0b3AiLCJ2YWxpZGF0ZSI6ZmFsc2UsImRpc2FibGVkIjpmYWxzZSwibm9IdG1sNVZhbGlkYXRlIjpmYWxzZSwicmVhZG9ubHkiOmZhbHNlLCJvbWl0RXh0cmFEYXRhIjpmYWxzZSwibGl2ZU9taXQiOmZhbHNlLCJleHBlcmltZW50YWxfZGVmYXVsdEZvcm1TdGF0ZUJlaGF2aW9yIjp7ImFycmF5TWluSXRlbXMiOiJwb3B1bGF0ZSIsImVtcHR5T2JqZWN0RmllbGRzIjoicG9wdWxhdGVBbGxEZWZhdWx0cyJ9fX0=",
"title": "Environment",
"properties": {
"description": {
Expand All @@ -23,5 +23,9 @@
"x-rjsf-grid-area": "12"
}
},
"type": "object"
"type": "object",
"required": [
"name",
"organization"
]
}
55 changes: 55 additions & 0 deletions schemas/schemaProvider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package schemas

import (
"fmt"
)

func getSchemaMap() map[string]string {
return map[string]string{
"application": "external/ui/catalog/applicationImport.json",
"filter": "external/ui/catalog/filterImport.json",
"design": "external/ui/catalog/designImport.json",
"publish": "external/ui/catalog/publishCatalogItem.json",
"helmRepo": "external/ui/connections/helmConnection/helmRepoConnection.json",
"environment": "external/ui/environment/environment.json",
"workspace": "external/ui/catalog/workspace.json",
}
}

func getUiSchemaMap() map[string]string {
return map[string]string{
"application": "external/ui/catalog/uiSchemaApplication.json",
"design": "external/ui/catalog/uiSchemaDesignImport.json",
"filter": "external/ui/catalog/uiSchemaFilter.json",
"publish": "external/ui/catalog/uiSchemaPublishCatalogItem.json",
"helmRepo": "external/ui/connections/helmConnection/uiHelmRepoConnection.json",
"environment": "external/ui/catalog/uiSchemaEnvironment.json",
"workspace": "external/ui/catalog/uiSchemaWorkspace.json",
}
}

// ServeJSonFile serves the content of the JSON schema along with the uiSchema if any is present
func ServeJSonFile(resourceName string) ([]byte, []byte, error) {
schemaLocation := getSchemaMap()[resourceName]
if schemaLocation == "" {
return nil, nil, fmt.Errorf("requested resource's (%s) schema is not found", resourceName)
}

jsonContent, err := Schemas.ReadFile(schemaLocation)

if err != nil {
return nil, nil, fmt.Errorf("error reading json file: %s", err)
}

uiSchemaLocation := getUiSchemaMap()[resourceName]
if uiSchemaLocation == "" {
return jsonContent, nil, nil
}

uiSchemaJsonContent, err := Schemas.ReadFile(uiSchemaLocation)
if err != nil {
return jsonContent, nil, nil
}

return jsonContent, uiSchemaJsonContent, nil
}
Loading