Commit 23fcd6d5 authored by Ryo Yamashita's avatar Ryo Yamashita Committed by Yas Naoi
Browse files

Issue #3298542 by Ryo Yamashita, yas: Add the function to create AWS Cloud...

Issue #3298542 by Ryo Yamashita, yas: Add the function to create AWS Cloud security group in the SPA
parent 5cad9514
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
import EntityFormTemplate from 'model/EntityFormTemplate';

const AWS_CLOUD_SECURITY_GROUP_TEMPLATE: EntityFormTemplate[] = [
  {
    cloudServiceProvider: 'aws_cloud',
    entityName: 'security_group',
    actionType: 'create',
    entityRecords: [
      {
        type: 'panel',
        panelName: 'Security group',
        keyValueRecords: [
          { type: 'default', labelName: 'Security group name', name: 'group_name', defaultValue: '', required: true },
          { type: 'default', labelName: 'Description', name: 'description', defaultValue: '', required: true },
          { type: 'join', labelName: 'VPC CIDR (ID)', name: 'vpc_id', info: {
            entityTypeId: 'aws_cloud_vpc',
            keyColumn: 'vpc_id',
            label: '{name} ({vpc_id} | {cidr_block})'
          }, defaultValue: '', required: true },
        ]
      }
    ]
  },
  {
    cloudServiceProvider: 'aws_cloud',
    entityName: 'security_group',
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ type EntityFormColumnInfo = {
  info: {
    entityTypeId: string,
    keyColumn: string,
    label?: string,
  },
  defaultValue: string,
} | {
+1 −0
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ const EntityFormBlock = ({ keyValueRecord, cloudContext, formData, setFormData }
        setValue={setValue}
        entityTypeId={keyValueRecord.info.entityTypeId}
        keyColumn={keyValueRecord.info.keyColumn}
        optionLabel={keyValueRecord.info.label ?? '{name}'}
        required={!!keyValueRecord.required}
        readOnly={!!keyValueRecord.readOnly} />;
    case 'select':
+11 −2
Original line number Diff line number Diff line
@@ -4,17 +4,26 @@ import LabelBlock from 'molecules/LabelBlock';
import SelectBlock from 'molecules/SelectBlock';
import { useEffect, useState } from 'react';

const convertLabel = (entityData: EntityData, labelFormat: string): string => {
  let output = labelFormat;
  for (const key in entityData.attributes) {
    output = output.replaceAll(`{${key}}`, entityData.attributes[key]);
  }
  return output;
}

/**
 * Block of select view.
 *
 * @param
 */
const JoinSelectBlock = ({ label, value, setValue, entityTypeId, keyColumn, required, readOnly }: {
const JoinSelectBlock = ({ label, value, setValue, entityTypeId, keyColumn, optionLabel, required, readOnly }: {
  label: string,
  value: string,
  setValue: (s: string) => void,
  entityTypeId: string,
  keyColumn: string,
  optionLabel: string,
  required: boolean,
  readOnly: boolean,
}) => {
@@ -49,7 +58,7 @@ const JoinSelectBlock = ({ label, value, setValue, entityTypeId, keyColumn, requ
    value={value}
    setValue={setValue}
    recordList={dataList.map((d) => {
      return { value: d.attributes[keyColumn], label: d.attributes['name'] };
      return { value: d.attributes[keyColumn], label: convertLabel(d, optionLabel) };
    })}
    required={required} />;

+12 −0
Original line number Diff line number Diff line
@@ -803,6 +803,18 @@ class ApiController extends ControllerBase implements ApiControllerInterface {
          $method_name = 'createImageFromInstance';
          break;

        case 'create_aws_cloud_security_group':
          /** @var \Drupal\aws_cloud\Entity\Ec2\SecurityGroupInterface $entity */
          $entity->setGroupName($request->get('group_name', ''));
          $entity->setDescription($request->get('description', ''));
          $vpc_id = $request->get('vpc_id', '');
          if (empty($vpc_id)) {
            $vpc_id = $entity->getVpcId();
          }
          $form_state->set('vpc_id', $vpc_id);
          $method_name = 'createSecurityGroup';
          break;

        case 'delete_aws_cloud_instance':
          $method_name = 'deleteInstance';
          break;
Loading