id: deploy type: PageHeaderMenu properties: title: Deploy layout: contentJustify: center areas: content: blocks: - id: content type: Card layout: size: 1000 contentGutter: 10 blocks: - id: title type: Title layout: span: 24 properties: content: Deploy - id: leftcolumn type: Box layout: span: 12 contentGutter: 10 blocks: - id: macaddress required: true type: TextInput properties: title: MAC Address placeholder: 00:00:00:00:00:00 validate: - status: error message: Enter a valid MAC address pass: _regex: ^(?!(?:00[:-]){5}00)((?:[0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2})$ - id: projectname type: TextInput properties: title: Project name - id: hostname required: true type: TextInput properties: title: Hostname label: extra: Can only contain alphanumeric characters and hyphens; must be between 1 and 15 characters long extraStyle: font-size: smaller font-style: italic validate: - status: error message: Enter a valid hostname pass: _regex: ^([a-zA-Z0-9]{1,15}|[a-zA-Z0-9][a-zA-Z0-9\-]{0,13}[a-zA-Z0-9])$ - id: ipaddress required: true type: TextInput properties: title: IP address placeholder: 0.0.0.0 validate: - status: error message: Enter a valid IP address pass: _regex: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ - id: subnetmask required: true type: TextInput properties: title: Subnet mask placeholder: 255.255.255.0 validate: - status: error message: Enter a valid subnet mask pass: _regex: ^(?:(255|254|252|248|240|224|192|128|0+)(?:\.(?!$)|$)){4}$ - id: gateway required: true type: TextInput properties: title: Gateway placeholder: 0.0.0.0 validate: - status: error message: Enter a valid IP address pass: _regex: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ - id: dnsserver required: true type: TextInput properties: title: DNS server placeholder: 1.1.1.1, 1.0.0.1 label: extra: (comma-separated list of IP addresses) extraStyle: font-size: smaller font-style: italic validate: - status: error message: Enter one or more valid IP addresses, separated by a comma pass: _regex: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?))(?:,\s*(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)))*$ - id: dnssuffix required: true type: TextInput properties: title: DNS suffix placeholder: example.org validate: - status: error message: Enter a valid domain name pass: _regex: (?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+[a-zA-Z]{2,63}$) - id: rightcolumn type: Box layout: span: 12 contentGutter: 10 blocks: - id: certificate required: true type: TextArea properties: autoSize: maxRows: 4 minRows: 4 block: true title: Certificate placeholder: | -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- label: extra: PEM format extraStyle: font-size: smaller font-style: italic - id: privatekey required: true type: TextArea properties: autoSize: maxRows: 4 minRows: 4 block: true title: Private key placeholder: | -----BEGIN RSA PRIVATE KEY----- [...] -----END RSA PRIVATE KEY----- label: extra: PEM format extraStyle: font-size: smaller font-style: italic - id: fullchain required: true type: TextArea properties: autoSize: maxRows: 4 minRows: 4 block: true title: Issuing CA chain placeholder: | -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- label: extra: PEM format extraStyle: font-size: smaller font-style: italic - id: warning type: Alert properties: message: Only *after* pressing 'Start Deployment', can the physical device be booted over LAN type: warning - id: reset_button type: Button layout: grow: 1 properties: title: Reset icon: ClearOutlined block: true type: default events: onClick: - id: reset type: Reset - id: start_deployment type: Button layout: grow: 3 properties: title: Start Deployment icon: RocketOutlined block: true # requests: # - id: update_brand # type: MongoDBUpdateOne # MongoDb updateOne request to update the brand. # connectionId: brands # properties: # filter: # _id: # _state: _id # Select the document that matches the document's _id that is in state. # update: # $set: # name: # _state: name # Insert the brand name we set in state. # description: # _state: description # Insert the description name we set in state. # updated_at: # _date: now # Set the updated_at date as current time. events: onClick: - id: validate type: Validate - id: update_brand # Call the update_brand request. type: Request params: update_brand