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
6341e1d3
Commit
6341e1d3
authored
Oct 16, 2015
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #15658 from yifan-gu/rkt_cli
Auto commit by PR queue bot
parents
3a3d4b36
a95b605f
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
222 additions
and
27 deletions
+222
-27
Godeps.json
Godeps/Godeps.json
+2
-2
doc.go
...orkspace/src/github.com/appc/spec/schema/lastditch/doc.go
+28
-0
image.go
...kspace/src/github.com/appc/spec/schema/lastditch/image.go
+45
-0
labels.go
...space/src/github.com/appc/spec/schema/lastditch/labels.go
+38
-0
pod.go
...orkspace/src/github.com/appc/spec/schema/lastditch/pod.go
+57
-0
pod.go
Godeps/_workspace/src/github.com/appc/spec/schema/pod.go
+6
-6
app.go
...s/_workspace/src/github.com/appc/spec/schema/types/app.go
+10
-9
semver.go
...workspace/src/github.com/appc/spec/schema/types/semver.go
+15
-0
version.go
Godeps/_workspace/src/github.com/appc/spec/schema/version.go
+1
-1
rkt.go
pkg/kubelet/rkt/rkt.go
+20
-9
No files found.
Godeps/Godeps.json
View file @
6341e1d3
...
...
@@ -44,8 +44,8 @@
},
{
"ImportPath"
:
"github.com/appc/spec/schema"
,
"Comment"
:
"v0.
6.1-30-gc928a0c
"
,
"Rev"
:
"
c928a0c907c96034dfc0a69098b2179db5ae7e37
"
"Comment"
:
"v0.
7.1
"
,
"Rev"
:
"
818ac4d0073424f4e0a46f45abaa147ccc1b5a24
"
},
{
"ImportPath"
:
"github.com/aws/aws-sdk-go/aws"
,
...
...
Godeps/_workspace/src/github.com/appc/spec/schema/lastditch/doc.go
0 → 100644
View file @
6341e1d3
// Copyright 2015 The appc Authors
//
// 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.
// Package lastditch provides fallback redefinitions of parts of
// schemas provided by schema package.
//
// Almost no validation of schemas is done (besides checking if data
// really is `JSON`-encoded and kind is either `ImageManifest` or
// `PodManifest`. This is to get as much data as possible from an
// invalid manifest. The main aim of the package is to be used for the
// better error reporting. The another aim might be to force some
// operation (like removing a pod), which would otherwise fail because
// of an invalid manifest.
//
// To avoid validation during deserialization, types provided by this
// package use plain strings.
package
lastditch
Godeps/_workspace/src/github.com/appc/spec/schema/lastditch/image.go
0 → 100644
View file @
6341e1d3
// Copyright 2015 The appc Authors
//
// 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.
package
lastditch
import
(
"encoding/json"
"github.com/appc/spec/schema"
"github.com/appc/spec/schema/types"
)
type
ImageManifest
struct
{
ACVersion
string
`json:"acVersion"`
ACKind
string
`json:"acKind"`
Name
string
`json:"name"`
Labels
Labels
`json:"labels,omitempty"`
}
// a type just to avoid a recursion during unmarshalling
type
imageManifest
ImageManifest
func
(
im
*
ImageManifest
)
UnmarshalJSON
(
data
[]
byte
)
error
{
i
:=
imageManifest
(
*
im
)
err
:=
json
.
Unmarshal
(
data
,
&
i
)
if
err
!=
nil
{
return
err
}
if
i
.
ACKind
!=
string
(
schema
.
ImageManifestKind
)
{
return
types
.
InvalidACKindError
(
schema
.
ImageManifestKind
)
}
*
im
=
ImageManifest
(
i
)
return
nil
}
Godeps/_workspace/src/github.com/appc/spec/schema/lastditch/labels.go
0 → 100644
View file @
6341e1d3
// Copyright 2015 The appc Authors
//
// 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.
package
lastditch
import
(
"encoding/json"
)
type
Labels
[]
Label
// a type just to avoid a recursion during unmarshalling
type
labels
Labels
type
Label
struct
{
Name
string
`json:"name"`
Value
string
`json:"value"`
}
func
(
l
*
Labels
)
UnmarshalJSON
(
data
[]
byte
)
error
{
var
jl
labels
if
err
:=
json
.
Unmarshal
(
data
,
&
jl
);
err
!=
nil
{
return
err
}
*
l
=
Labels
(
jl
)
return
nil
}
Godeps/_workspace/src/github.com/appc/spec/schema/lastditch/pod.go
0 → 100644
View file @
6341e1d3
// Copyright 2015 The appc Authors
//
// 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.
package
lastditch
import
(
"encoding/json"
"github.com/appc/spec/schema"
"github.com/appc/spec/schema/types"
)
type
PodManifest
struct
{
ACVersion
string
`json:"acVersion"`
ACKind
string
`json:"acKind"`
Apps
AppList
`json:"apps"`
}
type
AppList
[]
RuntimeApp
type
RuntimeApp
struct
{
Name
string
`json:"name"`
Image
RuntimeImage
`json:"image"`
}
type
RuntimeImage
struct
{
Name
string
`json:"name"`
ID
string
`json:"id"`
Labels
Labels
`json:"labels,omitempty"`
}
// a type just to avoid a recursion during unmarshalling
type
podManifest
PodManifest
func
(
pm
*
PodManifest
)
UnmarshalJSON
(
data
[]
byte
)
error
{
p
:=
podManifest
(
*
pm
)
err
:=
json
.
Unmarshal
(
data
,
&
p
)
if
err
!=
nil
{
return
err
}
if
p
.
ACKind
!=
string
(
schema
.
PodManifestKind
)
{
return
types
.
InvalidACKindError
(
schema
.
PodManifestKind
)
}
*
pm
=
PodManifest
(
p
)
return
nil
}
Godeps/_workspace/src/github.com/appc/spec/schema/pod.go
View file @
6341e1d3
...
...
@@ -126,19 +126,19 @@ func (al AppList) Get(name types.ACName) *RuntimeApp {
return
nil
}
// Mount describes the mapping between a volume and
an apps
//
MountPoint that will be fulfilled at runtime
.
// Mount describes the mapping between a volume and
the path it is mounted
//
inside of an app's filesystem
.
type
Mount
struct
{
Volume
types
.
ACName
`json:"volume"`
MountPoint
types
.
ACName
`json:"mountPoint
"`
Volume
types
.
ACName
`json:"volume"`
Path
string
`json:"path
"`
}
func
(
r
Mount
)
assertValid
()
error
{
if
r
.
Volume
.
Empty
()
{
return
errors
.
New
(
"volume must be set"
)
}
if
r
.
MountPoint
.
Empty
()
{
return
errors
.
New
(
"
mountPoint
must be set"
)
if
r
.
Path
==
""
{
return
errors
.
New
(
"
path
must be set"
)
}
return
nil
}
...
...
Godeps/_workspace/src/github.com/appc/spec/schema/types/app.go
View file @
6341e1d3
...
...
@@ -22,15 +22,16 @@ import (
)
type
App
struct
{
Exec
Exec
`json:"exec"`
EventHandlers
[]
EventHandler
`json:"eventHandlers,omitempty"`
User
string
`json:"user"`
Group
string
`json:"group"`
WorkingDirectory
string
`json:"workingDirectory,omitempty"`
Environment
Environment
`json:"environment,omitempty"`
MountPoints
[]
MountPoint
`json:"mountPoints,omitempty"`
Ports
[]
Port
`json:"ports,omitempty"`
Isolators
Isolators
`json:"isolators,omitempty"`
Exec
Exec
`json:"exec"`
EventHandlers
[]
EventHandler
`json:"eventHandlers,omitempty"`
User
string
`json:"user"`
Group
string
`json:"group"`
SupplementaryGIDs
[]
int
`json:"supplementaryGIDs,omitempty"`
WorkingDirectory
string
`json:"workingDirectory,omitempty"`
Environment
Environment
`json:"environment,omitempty"`
MountPoints
[]
MountPoint
`json:"mountPoints,omitempty"`
Ports
[]
Port
`json:"ports,omitempty"`
Isolators
Isolators
`json:"isolators,omitempty"`
}
// app is a model to facilitate extra validation during the
...
...
Godeps/_workspace/src/github.com/appc/spec/schema/types/semver.go
View file @
6341e1d3
...
...
@@ -44,6 +44,21 @@ func NewSemVer(s string) (*SemVer, error) {
return
&
v
,
nil
}
func
(
sv
SemVer
)
LessThanMajor
(
versionB
SemVer
)
bool
{
majorA
:=
semver
.
Version
(
sv
)
.
Major
majorB
:=
semver
.
Version
(
versionB
)
.
Major
if
majorA
<
majorB
{
return
true
}
return
false
}
func
(
sv
SemVer
)
LessThanExact
(
versionB
SemVer
)
bool
{
vA
:=
semver
.
Version
(
sv
)
vB
:=
semver
.
Version
(
versionB
)
return
vA
.
LessThan
(
vB
)
}
func
(
sv
SemVer
)
String
()
string
{
s
:=
semver
.
Version
(
sv
)
return
s
.
String
()
...
...
Godeps/_workspace/src/github.com/appc/spec/schema/version.go
View file @
6341e1d3
...
...
@@ -22,7 +22,7 @@ const (
// version represents the canonical version of the appc spec and tooling.
// For now, the schema and tooling is coupled with the spec itself, so
// this must be kept in sync with the VERSION file in the root of the repo.
version
string
=
"0.
6.1+git
"
version
string
=
"0.
7.1
"
)
var
(
...
...
pkg/kubelet/rkt/rkt.go
View file @
6341e1d3
...
...
@@ -52,8 +52,9 @@ import (
)
const
(
acVersion
=
"0.6.1"
rktMinimumVersion
=
"0.8.1"
acVersion
=
"0.7.1"
minimumRktVersion
=
"0.9.0"
recommendRktVersion
=
"0.9.0"
systemdMinimumVersion
=
"219"
systemdServiceDir
=
"/run/systemd/system"
...
...
@@ -155,13 +156,23 @@ func New(config *Config,
if
err
!=
nil
{
return
nil
,
err
}
result
,
err
=
version
.
Compare
(
rktMinimum
Version
)
result
,
err
=
version
.
Compare
(
minimumRkt
Version
)
if
err
!=
nil
{
return
nil
,
err
}
if
result
<
0
{
return
nil
,
fmt
.
Errorf
(
"rkt:
Version is too old, requires at least %v"
,
rktMinimum
Version
)
return
nil
,
fmt
.
Errorf
(
"rkt:
version is too old, requires at least %v"
,
minimumRkt
Version
)
}
result
,
err
=
version
.
Compare
(
recommendRktVersion
)
if
err
!=
nil
{
return
nil
,
err
}
if
result
!=
0
{
// TODO(yifan): Record an event to expose the information.
glog
.
Warningf
(
"rkt: current version %q is not recommended (recommended version %q)"
,
version
,
recommendRktVersion
)
}
return
rkt
,
nil
}
...
...
@@ -581,9 +592,9 @@ func (r *Runtime) preparePod(pod *api.Pod, pullSecrets []api.Secret) (string, *k
var
runPrepared
string
if
pod
.
Spec
.
SecurityContext
!=
nil
&&
pod
.
Spec
.
SecurityContext
.
HostNetwork
{
runPrepared
=
fmt
.
Sprintf
(
"%s run-prepared --mds-register=false %s"
,
r
.
rktBinAbsPath
,
uuid
)
runPrepared
=
fmt
.
Sprintf
(
"%s run-prepared --mds-register=false
--net=host
%s"
,
r
.
rktBinAbsPath
,
uuid
)
}
else
{
runPrepared
=
fmt
.
Sprintf
(
"%s run-prepared --mds-register=false
--private-net
%s"
,
r
.
rktBinAbsPath
,
uuid
)
runPrepared
=
fmt
.
Sprintf
(
"%s run-prepared --mds-register=false %s"
,
r
.
rktBinAbsPath
,
uuid
)
}
// TODO handle pod.Spec.HostPID
...
...
@@ -1329,14 +1340,14 @@ func (r *Runtime) getImageByName(imageName string) (*kubecontainer.Image, error)
// ListImages lists all the available appc images on the machine by invoking 'rkt image list'.
func
(
r
*
Runtime
)
ListImages
()
([]
kubecontainer
.
Image
,
error
)
{
// Example output of 'rkt image list --fields=
key,name
':
// Example output of 'rkt image list --fields=
id,name --full
':
//
//
KEY
NAME
//
ID
NAME
// sha512-374770396f23dd153937cd66694fe705cf375bcec7da00cf87e1d9f72c192da7 nginx:latest
// sha512-bead9e0df8b1b4904d0c57ade2230e6d236e8473f62614a8bc6dcf11fc924123 coreos.com/rkt/stage1:0.8.1
//
// With '--no-legend=true' the fist line (KEY NAME) will be omitted.
output
,
err
:=
r
.
runCommand
(
"image"
,
"list"
,
"--no-legend=true"
,
"--fields=
key,name
"
)
output
,
err
:=
r
.
runCommand
(
"image"
,
"list"
,
"--no-legend=true"
,
"--fields=
id,name"
,
"--full
"
)
if
err
!=
nil
{
return
nil
,
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