Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
2307350d
Commit
2307350d
authored
May 18, 2015
by
Tim Hockin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8443 from wojtek-t/conversion_improvements
Script for regenerate auto-generated conversions.
parents
1e1092dd
9a932067
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
95 additions
and
48 deletions
+95
-48
conversion.go
cmd/kube-conversion/conversion.go
+2
-13
update-generated-conversions.sh
hack/update-generated-conversions.sh
+57
-0
conversion_generated.go
pkg/api/v1/conversion_generated.go
+2
-2
conversion_generated.go
pkg/api/v1beta3/conversion_generated.go
+2
-2
conversion_generation_test.go
pkg/runtime/conversion_generation_test.go
+11
-27
conversion_generator.go
pkg/runtime/conversion_generator.go
+21
-4
No files found.
cmd/kube-conversion/conversion.go
View file @
2307350d
...
...
@@ -34,7 +34,6 @@ import (
var
(
functionDest
=
flag
.
StringP
(
"funcDest"
,
"f"
,
"-"
,
"Output for conversion functions; '-' means stdout"
)
namesDest
=
flag
.
StringP
(
"nameDest"
,
"n"
,
"-"
,
"Output for function names; '-' means stdout"
)
version
=
flag
.
StringP
(
"version"
,
"v"
,
"v1beta3"
,
"Version for conversion."
)
)
...
...
@@ -53,21 +52,11 @@ func main() {
defer
file
.
Close
()
funcOut
=
file
}
var
nameOut
io
.
Writer
if
*
namesDest
==
"-"
{
nameOut
=
os
.
Stdout
}
else
{
file
,
err
:=
os
.
Create
(
*
namesDest
)
if
err
!=
nil
{
glog
.
Fatalf
(
"Couldn't open %v: %v"
,
*
functionDest
,
err
)
}
defer
file
.
Close
()
nameOut
=
file
}
generator
:=
pkg_runtime
.
NewConversionGenerator
(
api
.
Scheme
.
Raw
())
// TODO(wojtek-t): Change the overwrites to a flag.
generator
.
OverwritePackage
(
*
version
,
""
)
// TODO(wojtek-t): Get rid of this overwrite.
generator
.
OverwritePackage
(
"api"
,
"newer"
)
for
_
,
knownType
:=
range
api
.
Scheme
.
KnownTypes
(
*
version
)
{
if
err
:=
generator
.
GenerateConversionsForType
(
*
version
,
knownType
);
err
!=
nil
{
...
...
@@ -77,7 +66,7 @@ func main() {
if
err
:=
generator
.
WriteConversionFunctions
(
funcOut
);
err
!=
nil
{
glog
.
Fatalf
(
"Error while writing conversion functions: %v"
,
err
)
}
if
err
:=
generator
.
WriteConversionFunctionNames
(
name
Out
);
err
!=
nil
{
if
err
:=
generator
.
RegisterConversionFunctions
(
func
Out
);
err
!=
nil
{
glog
.
Fatalf
(
"Error while writing conversion functions: %v"
,
err
)
}
}
hack/update-generated-conversions.sh
0 → 100755
View file @
2307350d
#!/bin/bash
# Copyright 2015 The Kubernetes Authors All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Script to fetch latest swagger spec.
# Puts the updated spec at swagger-spec/
set
-o
errexit
set
-o
nounset
set
-o
pipefail
function
generate_version
()
{
local
version
=
$1
local
TMPFILE
=
"/tmp/conversion_generated.
$(
date
+%s
)
.go"
echo
"Generating for version
${
version
}
"
sed
's/YEAR/2015/'
hooks/boilerplate.go.txt
>
$TMPFILE
cat
>>
$TMPFILE
<<
EOF
package
${
version
}
import (
"reflect"
newer "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/resource"
"github.com/GoogleCloudPlatform/kubernetes/pkg/conversion"
)
// AUTO-GENERATED FUNCTIONS START HERE
EOF
go run cmd/kube-conversion/conversion.go
-v
${
version
}
-f
-
>>
$TMPFILE
cat
>>
$TMPFILE
<<
EOF
// AUTO-GENERATED FUNCTIONS END HERE
EOF
mv
$TMPFILE
pkg/api/
${
version
}
/conversion_generated.go
}
VERSIONS
=
"v1beta3 v1"
for
ver
in
$VERSIONS
;
do
generate_version
"
${
ver
}
"
done
pkg/api/v1/conversion_generated.go
View file @
2307350d
...
...
@@ -4475,8 +4475,6 @@ func convert_api_VolumeSource_To_v1_VolumeSource(in *newer.VolumeSource, out *Vo
return
nil
}
// AUTO-GENERATED FUNCTIONS END HERE
func
init
()
{
err
:=
newer
.
Scheme
.
AddGeneratedConversionFuncs
(
convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource
,
...
...
@@ -4705,3 +4703,5 @@ func init() {
panic
(
err
)
}
}
// AUTO-GENERATED FUNCTIONS END HERE
pkg/api/v1beta3/conversion_generated.go
View file @
2307350d
...
...
@@ -4289,8 +4289,6 @@ func convert_api_VolumeSource_To_v1beta3_VolumeSource(in *newer.VolumeSource, ou
return
nil
}
// AUTO-GENERATED FUNCTIONS END HERE
func
init
()
{
err
:=
newer
.
Scheme
.
AddGeneratedConversionFuncs
(
convert_api_AWSElasticBlockStoreVolumeSource_To_v1beta3_AWSElasticBlockStoreVolumeSource
,
...
...
@@ -4517,3 +4515,5 @@ func init() {
panic
(
err
)
}
}
// AUTO-GENERATED FUNCTIONS END HERE
pkg/runtime/conversion_generation_test.go
View file @
2307350d
...
...
@@ -33,7 +33,7 @@ import (
"github.com/golang/glog"
)
func
generateConversions
(
t
*
testing
.
T
,
version
string
)
(
bytes
.
Buffer
,
bytes
.
Buffer
)
{
func
generateConversions
(
t
*
testing
.
T
,
version
string
)
bytes
.
Buffer
{
g
:=
runtime
.
NewConversionGenerator
(
api
.
Scheme
.
Raw
())
g
.
OverwritePackage
(
version
,
""
)
g
.
OverwritePackage
(
"api"
,
"newer"
)
...
...
@@ -51,17 +51,14 @@ func generateConversions(t *testing.T, version string) (bytes.Buffer, bytes.Buff
if
err
:=
functionsWriter
.
Flush
();
err
!=
nil
{
t
.
Fatalf
(
"error while flushing writer"
)
}
var
names
bytes
.
Buffer
namesWriter
:=
bufio
.
NewWriter
(
&
names
)
if
err
:=
g
.
WriteConversionFunctionNames
(
namesWriter
);
err
!=
nil
{
if
err
:=
g
.
RegisterConversionFunctions
(
functionsWriter
);
err
!=
nil
{
t
.
Fatalf
(
"couldn't generate conversion function names: %v"
,
err
)
}
if
err
:=
name
sWriter
.
Flush
();
err
!=
nil
{
if
err
:=
function
sWriter
.
Flush
();
err
!=
nil
{
t
.
Fatalf
(
"error while flushing writer"
)
}
return
functions
,
names
return
functions
}
func
readLinesUntil
(
t
*
testing
.
T
,
reader
*
bufio
.
Reader
,
stop
string
,
buffer
*
bytes
.
Buffer
)
error
{
...
...
@@ -85,7 +82,7 @@ func readLinesUntil(t *testing.T, reader *bufio.Reader, stop string, buffer *byt
return
nil
}
func
bufferExistingConversions
(
t
*
testing
.
T
,
fileName
string
)
(
bytes
.
Buffer
,
bytes
.
Buffer
)
{
func
bufferExistingConversions
(
t
*
testing
.
T
,
fileName
string
)
bytes
.
Buffer
{
file
,
err
:=
os
.
Open
(
fileName
)
if
err
!=
nil
{
t
.
Fatalf
(
"couldn't open file %s"
,
fileName
)
...
...
@@ -103,18 +100,11 @@ func bufferExistingConversions(t *testing.T, fileName string) (bytes.Buffer, byt
if
err
:=
readLinesUntil
(
t
,
reader
,
functionsSuffix
,
&
functions
);
err
!=
nil
{
t
.
Fatalf
(
"error while parsing file: %v"
,
err
)
}
functionNamesPrefix
:=
"
\t
err := newer.Scheme.AddGeneratedConversionFuncs(
\n
"
functionNamesSuffix
:=
"
\t
)
\n
"
if
err
:=
readLinesUntil
(
t
,
reader
,
functionNamesPrefix
,
nil
);
err
!=
nil
{
t
.
Fatalf
(
"error while parsing file: %v"
,
err
)
_
,
err
=
reader
.
ReadString
(
'\n'
)
if
err
==
nil
||
err
!=
io
.
EOF
{
t
.
Fatalf
(
"end-of-file expected"
)
}
var
names
bytes
.
Buffer
if
err
:=
readLinesUntil
(
t
,
reader
,
functionNamesSuffix
,
&
names
);
err
!=
nil
{
t
.
Fatalf
(
"error while parsing file: %v"
,
err
)
}
return
functions
,
names
return
functions
}
func
compareBuffers
(
t
*
testing
.
T
,
generatedFile
string
,
existing
,
generated
bytes
.
Buffer
)
bool
{
...
...
@@ -150,20 +140,14 @@ func TestNoManualChangesToGenerateConversions(t *testing.T) {
for
_
,
version
:=
range
versions
{
fileName
:=
fmt
.
Sprintf
(
"../../pkg/api/%s/conversion_generated.go"
,
version
)
existingFunctions
,
existingNames
:=
bufferExistingConversions
(
t
,
fileName
)
generatedFunctions
,
generatedNames
:=
generateConversions
(
t
,
version
)
existingFunctions
:=
bufferExistingConversions
(
t
,
fileName
)
generatedFunctions
:=
generateConversions
(
t
,
version
)
functionsTxt
:=
fmt
.
Sprintf
(
"%s.functions.txt"
,
version
)
ioutil
.
WriteFile
(
functionsTxt
,
generatedFunctions
.
Bytes
(),
os
.
FileMode
(
0644
))
namesTxt
:=
fmt
.
Sprintf
(
"%s.names.txt"
,
version
)
ioutil
.
WriteFile
(
namesTxt
,
generatedNames
.
Bytes
(),
os
.
FileMode
(
0644
))
if
ok
:=
compareBuffers
(
t
,
functionsTxt
,
existingFunctions
,
generatedFunctions
);
ok
{
os
.
Remove
(
functionsTxt
)
}
if
ok
:=
compareBuffers
(
t
,
namesTxt
,
existingNames
,
generatedNames
);
ok
{
os
.
Remove
(
namesTxt
)
}
}
}
pkg/runtime/conversion_generator.go
View file @
2307350d
...
...
@@ -29,7 +29,7 @@ import (
type
ConversionGenerator
interface
{
GenerateConversionsForType
(
version
string
,
reflection
reflect
.
Type
)
error
WriteConversionFunctions
(
w
io
.
Writer
)
error
WriteConversionFunctionName
s
(
w
io
.
Writer
)
error
RegisterConversionFunction
s
(
w
io
.
Writer
)
error
OverwritePackage
(
pkg
,
overwrite
string
)
}
...
...
@@ -263,7 +263,22 @@ func (g *conversionGenerator) WriteConversionFunctions(w io.Writer) error {
return
nil
}
func
(
g
*
conversionGenerator
)
WriteConversionFunctionNames
(
w
io
.
Writer
)
error
{
func
(
g
*
conversionGenerator
)
writeRegisterHeader
(
b
*
buffer
,
indent
int
)
{
b
.
addLine
(
"func init() {
\n
"
,
indent
)
b
.
addLine
(
"err := newer.Scheme.AddGeneratedConversionFuncs(
\n
"
,
indent
+
1
)
}
func
(
g
*
conversionGenerator
)
writeRegisterFooter
(
b
*
buffer
,
indent
int
)
{
b
.
addLine
(
")
\n
"
,
indent
+
1
)
b
.
addLine
(
"if err != nil {
\n
"
,
indent
+
1
)
b
.
addLine
(
"// If one of the conversion functions is malformed, detect it immediately.
\n
"
,
indent
+
2
)
b
.
addLine
(
"panic(err)
\n
"
,
indent
+
2
)
b
.
addLine
(
"}
\n
"
,
indent
+
1
)
b
.
addLine
(
"}
\n
"
,
indent
)
b
.
addLine
(
"
\n
"
,
indent
)
}
func
(
g
*
conversionGenerator
)
RegisterConversionFunctions
(
w
io
.
Writer
)
error
{
// Write conversion function names alphabetically ordered.
var
names
[]
string
for
inType
,
outType
:=
range
g
.
convertibles
{
...
...
@@ -273,10 +288,12 @@ func (g *conversionGenerator) WriteConversionFunctionNames(w io.Writer) error {
sort
.
Strings
(
names
)
buffer
:=
newBuffer
()
indent
:=
2
indent
:=
0
g
.
writeRegisterHeader
(
buffer
,
indent
)
for
_
,
name
:=
range
names
{
buffer
.
addLine
(
fmt
.
Sprintf
(
"%s,
\n
"
,
name
),
indent
)
buffer
.
addLine
(
fmt
.
Sprintf
(
"%s,
\n
"
,
name
),
indent
+
2
)
}
g
.
writeRegisterFooter
(
buffer
,
indent
)
if
err
:=
buffer
.
flushLines
(
w
);
err
!=
nil
{
return
err
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment