cloud-8.x-2.0-beta1/modules/cloud_service_providers/k8s/tests/src/Traits/K8sTestFormDataTrait.php

modules/cloud_service_providers/k8s/tests/src/Traits/K8sTestFormDataTrait.php
<?php

namespace Drupal\Tests\k8s\Traits;

use Drupal\Component\Utility\Random;

/**
 * The trait creating form data for k8s testing.
 */
trait K8sTestFormDataTrait {

  /**
   * Create test data for cloud service provider (CloudConfig).
   *
   * @param int $repeat_count
   *   Repeat count.
   *
   * @return array
   *   Test data.
   */
  protected function createCloudConfigTestFormData($repeat_count) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0, $num = 1; $i < $repeat_count; $i++, $num++) {

      $data[] = [
        'name[0][value]'              => sprintf('config-entity-%s - %s', $random->name(8, TRUE), date('Y/m/d H:i:s')),
        'cloud_context'               => strtolower($random->name(16, TRUE)),
        'field_api_server[0][value]'  => 'https://www.k8s-test.com/',
        'field_token[0][value]'       => $random->name(128, TRUE),
      ];
    }

    return $data;
  }

  /**
   * Create test data for k8s node.
   *
   * @param int $repeat_count
   *   Repeat count.
   *
   * @return array
   *   Test data.
   */
  protected function createNodeTestFormData($repeat_count) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $data[] = [
        'name' => sprintf('Node-%s - %s', $random->name(8, TRUE), date('Y/m/d H:i:s')),
      ];
    }

    return $data;
  }

  /**
   * Create test data for k8s namespace.
   *
   * @param int $repeat_count
   *   Repeat count.
   *
   * @return array
   *   Test data.
   */
  protected function createNamespaceTestFormData($repeat_count) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $data[] = [
        'name' => sprintf('Namespace-%s - %s', $random->name(8, TRUE), date('Y/m/d H:i:s')),
        'labels[0][item_key]' => 'key-' . $random->name(8, TRUE),
        'labels[0][item_value]' => 'value-' . $random->name(8, TRUE),
      ];
    }

    return $data;
  }

  /**
   * Create random namespaces.
   *
   * @return array
   *   Random namespaces array.
   */
  protected function createNamespacesRandomTestFormData() {
    $namespaces = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $key = 'key-' . $this->random->name(8, TRUE);
      $value = 'value-' . $this->random->name(16, TRUE);
      $namespaces[] = [
        'name' => sprintf('namespace-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'labels' => [
          [$key => $value],
        ],
      ];
    }

    return $namespaces;
  }

  /**
   * Create test data for k8s pod.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createPodTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: apps/v1
kind: Pod
metadata:
  name: $name
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random pods.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random pods array.
   */
  protected function createPodsRandomTestFormData($namespace) {
    $pods = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $pods[] = [
        'name' => sprintf('pod-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $pods;
  }

  /**
   * Create test data for k8s deployment.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createDeploymentTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: Deployment
metadata:
  name: $name
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random deployments.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random deployments array.
   */
  protected function createDeploymentsRandomTestFormData($namespace) {
    $deployments = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $deployments[] = [
        'name' => sprintf('deployment-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $deployments;
  }

  /**
   * Create test data for k8s replica set.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createReplicaSetTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: Service
metadata:
  name: $name
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random replica set.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random replica sets array.
   */
  protected function createReplicaSetsRandomTestFormData($namespace) {
    $replica_sets = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $replica_sets[] = [
        'name' => sprintf('replica-set-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $replica_sets;
  }

  /**
   * Create test data for k8s service.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createServiceTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: Service
metadata:
  name: $name
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random services.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random services array.
   */
  protected function createServicesRandomTestFormData($namespace) {
    $services = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $services[] = [
        'name' => sprintf('service-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $services;
  }

  /**
   * Create test data for k8s cron job.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createCronJobTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: batch/v1beta1
kind: Job
metadata:
  name: $name
spec:
  schedule: "* * */1 * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: sleep
            image: alpine
            command: ["sh", "-c"]
            args:
            - |
              sleep 5
          restartPolicy: Never
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random cron jobs.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random cron jobs array.
   */
  protected function createCronJobsRandomTestFormData($namespace) {
    $cron_jobs = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $cron_jobs[] = [
        'name' => sprintf('cron-job-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $cron_jobs;
  }

  /**
   * Create test data for k8s job.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createJobTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: batch/v1
kind: Job
metadata:
  name: $name
spec:
  template:
    spec:
      containers:
      - name: sleep
        image: alpine
        command: ["sh",  "-c"]
        args:
        - |
          sleep 5
      restartPolicy: Never
  backoffLimit: 4
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random jobs.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random jobs array.
   */
  protected function createJobsRandomTestFormData($namespace) {
    $jobs = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $jobs[] = [
        'name' => sprintf('job-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $jobs;
  }

  /**
   * Create test data for k8s resource quota.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createResourceQuotaTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: ResourceQuota
metadata:
  name: $name
spec:
  hard:
    cpu: "10"
    memory: 20Gi
    pods: "10"
  scopeSelector:
    matchExpressions:
    - operator : In
      scopeName: PriorityClass
      values: ["medium"]
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random resource quotas.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random resource quotas array.
   */
  protected function createResourceQuotasRandomTestFormData($namespace) {
    $resource_quotas = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $resource_quotas[] = [
        'name' => sprintf('resource-quota-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $resource_quotas;
  }

  /**
   * Create test data for k8s limit range.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createLimitRangeTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: LimitRange
metadata:
  name: $name
spec:
  limits:
  - maxLimitRequestRatio:
      memory: 2
    type: Pod
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random limit ranges.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random limit ranges array.
   */
  protected function createLimitRangesRandomTestFormData($namespace) {
    $limit_ranges = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $limit_ranges[] = [
        'name' => sprintf('limit-range-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $limit_ranges;
  }

  /**
   * Create test data for k8s secret.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createSecretTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: Secret
metadata:
  name: $name
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random secrets.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random secrets array.
   */
  protected function createSecretsRandomTestFormData($namespace) {
    $secrets = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $secrets[] = [
        'name' => sprintf('secret-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $secrets;
  }

  /**
   * Create test data for k8s config map.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createConfigMapTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: v1
kind: ConfigMap
metadata:
  name: $name
data:
  property1: hello
  property2: world
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random config maps.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random config maps array.
   */
  protected function createConfigMapsRandomTestFormData($namespace) {
    $config_maps = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $config_maps[] = [
        'name' => sprintf('config-map-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $config_maps;
  }

  /**
   * Create test data for k8s network policy.
   *
   * @param int $repeat_count
   *   Repeat count.
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Test data.
   */
  protected function createNetworkPolicyTestFormData($repeat_count, $namespace) {
    $random = new Random();

    // Input Fields.
    $data = [];
    for ($i = 0; $i < $repeat_count; $i++) {
      $name = 'name-' . $random->name(8, TRUE);
      $detail = <<<EOS
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: $name
spec:
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    ports:
    - protocol: TCP
      port: 6379
EOS;
      $data[] = [
        'name' => $name,
        'post_data' => [
          'namespace' => $namespace,
          'detail[0][value]' => $detail,
        ],
      ];
    }

    return $data;
  }

  /**
   * Create random network policies.
   *
   * @param string $namespace
   *   The name of namespace.
   *
   * @return array
   *   Random network polices array.
   */
  protected function createNetworkPoliciesRandomTestFormData($namespace) {
    $network_polices = [];
    $count = rand(1, 10);
    for ($i = 0; $i < $count; $i++) {
      $network_polices[] = [
        'name' => sprintf('network-policy-random-data #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE)),
        'namespace' => $namespace,
      ];
    }

    return $network_polices;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc