refs #1473. Changes in ogRepo. Import
testing/ogcore-api/pipeline/head This commit looks good
Details
testing/ogcore-api/pipeline/head This commit looks good
Details
parent
95b85ccca1
commit
d5c75f6c45
|
@ -13,6 +13,8 @@ resources:
|
|||
filters:
|
||||
- 'api_platform.filter.repository.order'
|
||||
- 'api_platform.filter.repository.search'
|
||||
- 'repository.not_equal_filter'
|
||||
|
||||
ApiPlatform\Metadata\Get:
|
||||
provider: App\State\Provider\ImageRepositoryProvider
|
||||
ApiPlatform\Metadata\Put:
|
||||
|
@ -64,14 +66,14 @@ resources:
|
|||
uriTemplate: /image-repositories/{uuid}/export-image
|
||||
controller: App\Controller\OgRepository\Image\ExportAction
|
||||
|
||||
import_image_ogrepository:
|
||||
transfer_image_ogrepository:
|
||||
shortName: OgRepository Server
|
||||
description: Export Image in OgRepository
|
||||
class: ApiPlatform\Metadata\Post
|
||||
method: POST
|
||||
input: App\Dto\Input\ExportImportImageRepositoryInput
|
||||
uriTemplate: /image-repositories/{uuid}/import-image
|
||||
controller: App\Controller\OgRepository\Image\ImportAction
|
||||
uriTemplate: /image-repositories/{uuid}/transfer-image
|
||||
controller: App\Controller\OgRepository\Image\TransferAction
|
||||
|
||||
properties:
|
||||
App\Entity\ImageRepository:
|
||||
|
|
|
@ -55,7 +55,7 @@ services:
|
|||
api_platform.filter.image.order:
|
||||
parent: 'api_platform.doctrine.orm.order_filter'
|
||||
arguments:
|
||||
$properties: { 'id': ~, 'name': ~, 'createdAt': ~ }
|
||||
$properties: { 'id': ~, 'name': ~ }
|
||||
$orderParameterName: 'order'
|
||||
tags: [ 'api_platform.filter' ]
|
||||
|
||||
|
@ -190,6 +190,10 @@ services:
|
|||
arguments: [ { 'id': 'exact', 'name': 'partial'} ]
|
||||
tags: [ 'api_platform.filter' ]
|
||||
|
||||
repository.not_equal_filter:
|
||||
parent: 'App\Filter\NotEqualIdFilter'
|
||||
tags: [ 'api_platform.filter' ]
|
||||
|
||||
api_platform.filter.software.order:
|
||||
parent: 'api_platform.doctrine.orm.order_filter'
|
||||
arguments:
|
||||
|
|
|
@ -19,7 +19,7 @@ use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
|
|||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
|
||||
#[AsController]
|
||||
class ImportAction extends AbstractOgRepositoryController
|
||||
class TransferAction extends AbstractOgRepositoryController
|
||||
{
|
||||
/**
|
||||
* @throws TransportExceptionInterface
|
||||
|
@ -53,13 +53,17 @@ class ImportAction extends AbstractOgRepositoryController
|
|||
|
||||
$content = $this->createRequest('POST', 'http://'.$repository->getIp().':8006/ogrepository/v1/repo/images', $params);
|
||||
|
||||
if (!isset($content['job_id'])) {
|
||||
throw new ValidatorException('Job ID not found');
|
||||
}
|
||||
|
||||
$inputData = [
|
||||
'imageName' => $image->getName(),
|
||||
'imageUuid' => $image->getUuid(),
|
||||
'repositoryUuid' => $repository->getUuid(),
|
||||
];
|
||||
|
||||
$this->createService->__invoke($image->getClient(), CommandTypes::IMPORT_IMAGE, TraceStatus::IN_PROGRESS, $content['job_id'], $inputData);
|
||||
$this->createService->__invoke($image->getClient(), CommandTypes::TRANSFER_IMAGE, TraceStatus::IN_PROGRESS, $content['job_id'], $inputData);
|
||||
|
||||
$image->setStatus(ImageStatus::TRANSFERRING);
|
||||
$this->entityManager->persist($image);
|
|
@ -44,10 +44,10 @@ class ResponseController extends AbstractOgRepositoryController
|
|||
|
||||
if (str_starts_with($action, "CreateAuxiliarFiles_")) {
|
||||
$this->handleCreateAuxFiles($data);
|
||||
} elseif (str_starts_with($action, "TransferImage_")) {
|
||||
$this->processImageAction($data, 'transfer');
|
||||
} elseif (str_starts_with($action, "ExportImage_")) {
|
||||
$this->processImageAction($data, 'export');
|
||||
} elseif (str_starts_with($action, "ImportImage_")) {
|
||||
$this->processImageAction($data, 'import');
|
||||
} else {
|
||||
return new JsonResponse(['message' => 'Invalid action'], Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
@ -95,25 +95,9 @@ class ResponseController extends AbstractOgRepositoryController
|
|||
return;
|
||||
}
|
||||
|
||||
$this->logger->info("Image $actionType", ['image' => $image->getName()]);
|
||||
$this->logger->info("Image $actionType successful", ['image' => $image->getName()]);
|
||||
|
||||
$params = [
|
||||
'json' => [
|
||||
'image' => $image->getName().'.img'
|
||||
]
|
||||
];
|
||||
|
||||
$this->logger->info('Creating aux files', ['image' => $image->getName()]);
|
||||
$content = $this->createRequest('POST', 'http://'.$repository->getIp().':8006/ogrepository/v1/images/torrentsum', $params);
|
||||
|
||||
$inputData = [
|
||||
'imageName' => $image->getName(),
|
||||
'imageUuid' => $image->getUuid(),
|
||||
];
|
||||
|
||||
$this->createService->__invoke($image->getClient(), CommandTypes::CREATE_IMAGE_AUX_FILE, TraceStatus::IN_PROGRESS, $content['job_id'], $inputData);
|
||||
|
||||
$image->setRepository($repository);
|
||||
$image->addRepository($repository);
|
||||
$image->setStatus(ImageStatus::SUCCESS);
|
||||
$this->entityManager->persist($image);
|
||||
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace App\Filter;
|
||||
|
||||
use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter;
|
||||
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
||||
use ApiPlatform\Metadata\Operation;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Symfony\Component\PropertyInfo\Type;
|
||||
|
||||
class NotEqualIdFilter extends AbstractFilter
|
||||
{
|
||||
protected function filterProperty(string $property, $value, QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void
|
||||
{
|
||||
if ($property !== 'id') {
|
||||
return;
|
||||
}
|
||||
|
||||
$alias = $queryBuilder->getRootAliases()[0];
|
||||
$queryBuilder
|
||||
->andWhere(sprintf('%s.%s != :id', $alias, $property))
|
||||
->setParameter('id', $value);
|
||||
}
|
||||
|
||||
public function getDescription(string $resourceClass): array
|
||||
{
|
||||
return [
|
||||
'id[neq]' => [
|
||||
'property' => 'id',
|
||||
'type' => Type::BUILTIN_TYPE_INT,
|
||||
'required' => false,
|
||||
'description' => 'Filter records where id is not equal to the given value.',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ final class CommandTypes
|
|||
public const string CREATE_IMAGE_AUX_FILE = 'create-image-aux-file';
|
||||
public const string IMPORT_IMAGE = 'import-image';
|
||||
public const string EXPORT_IMAGE = 'export-image';
|
||||
public const string TRANSFER_IMAGE = 'transfer-image';
|
||||
public const string POWER_ON = 'power-on';
|
||||
public const string REBOOT = 'reboot';
|
||||
public const string SHUTDOWN = 'shutdown';
|
||||
|
|
Loading…
Reference in New Issue