Repository navigation
Expand file tree
/
Copy pathImageCreate.php
More file actions
142 lines (126 loc) · 6.21 KB
/
Copy pathImageCreate.php
File metadata and controls
142 lines (126 loc) · 6.21 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
141
142
<?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;
/**
* Pull or import an image.
*
* @param array{
* "fromImage"?: string, //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.
* "fromSrc"?: string, //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.
* "repo"?: string, //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.
* "tag"?: string, //Tag or digest. If empty when pulling an image, this causes all tags for the given image to be pulled.
* "message"?: string, //Set commit message for imported image.
* "changes"?: array, //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.
* Repeat the parameter to apply multiple instructions.
*
* Supported `Dockerfile` instructions:
* `CMD`|`ENTRYPOINT`|`ENV`|`EXPOSE`|`ONBUILD`|`USER`|`VOLUME`|`WORKDIR`
* "platform"?: string, //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.
* } $queryParameters
* @param array{
* "X-Registry-Auth"?: string, //A base64url-encoded auth configuration.
*
* Refer to the [authentication section](#section/Authentication) for
* details.
* } $headerParameters
*/
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(['platform' => '']);
$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;
}
protected function getQueryStyles(): array
{
return ['changes' => ['style' => 'form', 'explode' => true]];
}
/**
* @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) {
return null;
}
if ((null === $contentType) === false && (404 === $status && false !== stripos(strtolower($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 !== stripos(strtolower($contentType), 'application/json'))) {
throw new \Docker\API\Exception\ImageCreateInternalServerErrorException($serializer->deserialize($body, 'Docker\API\Model\ErrorResponse', 'json'), $response);
}
}
public function getAuthenticationScopes(): array
{
return [];
}
}