forked from beluga-php/docker-php-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathImageCreate.php
More file actions
140 lines (125 loc) · 6.04 KB
/
Copy pathImageCreate.php
File metadata and controls
140 lines (125 loc) · 6.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?php
declare(strict_types=1);
namespace Docker\API\Endpoint;
class ImageCreate extends \Docker\API\Runtime\Client\BaseEndpoint implements \Docker\API\Runtime\Client\Endpoint
{
use \Docker\API\Runtime\Client\EndpointTrait;
/**
* Create an image by either pulling it from a registry or importing it.
*
* @param array $queryParameters {
*
* @var string $fromImage Name of the image to pull. The name may include a tag or digest. This parameter may only be used when pulling an image. The pull is cancelled if the HTTP connection is closed.
* @var string $fromSrc Source to import. The value may be a URL from which the image can be retrieved or `-` to read the image from the request body. This parameter may only be used when importing an image.
* @var string $repo Repository name given to an image when it is imported. The repo may include a tag. This parameter may only be used when importing an image.
* @var string $tag Tag or digest. If empty when pulling an image, this causes all tags for the given image to be pulled.
* @var string $message set commit message for imported image
* @var array $changes Apply `Dockerfile` instructions to the image that is created,
* for example: `changes=ENV DEBUG=true`.
* Note that `ENV DEBUG=true` should be URI component encoded.
*
* Supported `Dockerfile` instructions:
* `CMD`|`ENTRYPOINT`|`ENV`|`EXPOSE`|`ONBUILD`|`USER`|`VOLUME`|`WORKDIR`
* @var string $platform Platform in the format os[/arch[/variant]].
*
* When used in combination with the `fromImage` option, the daemon checks
* if the given image is present in the local image cache with the given
* OS and Architecture, and otherwise attempts to pull the image. If the
* option is not set, the host's native OS and Architecture are used.
* If the given image does not exist in the local image cache, the daemon
* attempts to pull the image with the host's native OS and Architecture.
* If the given image does exists in the local image cache, but its OS or
* architecture does not match, a warning is produced.
*
* When used with the `fromSrc` option to import an image from an archive,
* this option sets the platform information for the imported image. If
* the option is not set, the host's native OS and Architecture are used
* for the imported image.
*
* }
*
* @param array $headerParameters {
*
* @var string $X-Registry-Auth A base64url-encoded auth configuration.
*
* Refer to the [authentication section](#section/Authentication) for
* details.
*
* }
*/
public function __construct(?string $requestBody = null, array $queryParameters = [], array $headerParameters = [])
{
$this->body = $requestBody;
$this->queryParameters = $queryParameters;
$this->headerParameters = $headerParameters;
}
public function getMethod(): string
{
return 'POST';
}
public function getUri(): string
{
return '/images/create';
}
public function getBody(\Symfony\Component\Serializer\SerializerInterface $serializer, $streamFactory = null): array
{
if (\is_string($this->body)) {
return [['Content-Type' => ['text/plain']], $this->body];
}
if (\is_string($this->body)) {
return [['Content-Type' => ['application/octet-stream']], $this->body];
}
return [[], null];
}
public function getExtraHeaders(): array
{
return ['Accept' => ['application/json']];
}
protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver\OptionsResolver
{
$optionsResolver = parent::getQueryOptionsResolver();
$optionsResolver->setDefined(['fromImage', 'fromSrc', 'repo', 'tag', 'message', 'changes', 'platform']);
$optionsResolver->setRequired([]);
$optionsResolver->setDefaults([]);
$optionsResolver->addAllowedTypes('fromImage', ['string']);
$optionsResolver->addAllowedTypes('fromSrc', ['string']);
$optionsResolver->addAllowedTypes('repo', ['string']);
$optionsResolver->addAllowedTypes('tag', ['string']);
$optionsResolver->addAllowedTypes('message', ['string']);
$optionsResolver->addAllowedTypes('changes', ['array']);
$optionsResolver->addAllowedTypes('platform', ['string']);
return $optionsResolver;
}
protected function getHeadersOptionsResolver(): \Symfony\Component\OptionsResolver\OptionsResolver
{
$optionsResolver = parent::getHeadersOptionsResolver();
$optionsResolver->setDefined(['X-Registry-Auth']);
$optionsResolver->setRequired([]);
$optionsResolver->setDefaults([]);
$optionsResolver->addAllowedTypes('X-Registry-Auth', ['string']);
return $optionsResolver;
}
/**
* @throws \Docker\API\Exception\ImageCreateNotFoundException
* @throws \Docker\API\Exception\ImageCreateInternalServerErrorException
*
* @return null
*/
protected function transformResponseBody(\Psr\Http\Message\ResponseInterface $response, \Symfony\Component\Serializer\SerializerInterface $serializer, ?string $contentType = null)
{
$status = $response->getStatusCode();
$body = (string) $response->getBody();
if (200 === $status) {
}
if ((null === $contentType) === false && (404 === $status && false !== mb_strpos($contentType, 'application/json'))) {
throw new \Docker\API\Exception\ImageCreateNotFoundException($serializer->deserialize($body, 'Docker\\API\\Model\\ErrorResponse', 'json'), $response);
}
if ((null === $contentType) === false && (500 === $status && false !== mb_strpos($contentType, 'application/json'))) {
throw new \Docker\API\Exception\ImageCreateInternalServerErrorException($serializer->deserialize($body, 'Docker\\API\\Model\\ErrorResponse', 'json'), $response);
}
}
public function getAuthenticationScopes(): array
{
return [];
}
}