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;
}
}
