Skip to content
Snippets Groups Projects
Commit aad7e89c authored by Takumaru Sekine's avatar Takumaru Sekine Committed by Yas Naoi
Browse files

Issue #3351815 by sekinet, yas: Add a sharing field to the OpenStack Image...

Issue #3351815 by sekinet, yas: Add a sharing field to the OpenStack Image (Add validation to create form)
parent 713bf9df
No related branches found
No related tags found
No related merge requests found
......@@ -190,7 +190,6 @@ class OpenStackImageCreateForm extends ImageCreateForm {
'#title' => $this->t('Visibility'),
'#default_value' => OpenStackImageInterface::VISIBILITY_PUBLIC,
'#options' => OpenStackImageInterface::IMAGE_VISIBILITY,
'#suffix' => '</div>',
];
$form['image']['shared_projects'] = $form['shared_projects'];
......@@ -224,4 +223,27 @@ class OpenStackImageCreateForm extends ImageCreateForm {
$this->openStackOperationsService->createOpenStackImage($this->entity, $form, $form_state);
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state): void {
parent::validateForm($form, $form_state);
$image_visibility = $form_state->getValue('image_visibility');
if ($image_visibility != OpenStackImageInterface::VISIBILITY_SHARED) {
return;
}
$projects_input = $form_state->getValue('shared_projects');
if (empty($projects_input) || empty($projects_input[0]) || empty($projects_input[0]['project_id'])) {
return;
}
$project_id = $projects_input[0]['project_id'];
if (!preg_match('/^[a-zA-Z0-9]+$/', $project_id)) {
$form_state->setErrorByName('shared_projects', $this->t('The project ID is invalid.'));
return;
}
}
}
......@@ -477,6 +477,18 @@ class OpenStackOperationsService implements OpenStackOperationsServiceInterface
: [];
$shared_projects = [];
foreach ($projects ?: [] as $project) {
// Check if the project id exists.
$check_project = $this->ec2Service->describeProjects(
[
'ProjectId' => $project['project_id'],
]
);
if (empty($check_project) || empty($check_project['Projects'])) {
$this->messenger->addError($this->t('The Project does not exist. @label.', [
'@label' => $project['project_id'],
]));
continue;
}
$params = [
'ImageId' => $result['ImageId'],
'ProjectId' => $project['project_id'],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment