Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
凌波微步_大先生
dashboard
提交
150bba46
D
dashboard
项目概览
凌波微步_大先生
/
dashboard
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dashboard
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
150bba46
编写于
11月 30, 2015
作者:
M
Marcin Maciaszczyk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implemented backend events API
上级
b8f899f0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
109 addition
and
1 deletion
+109
-1
src/app/backend/apihandler.go
src/app/backend/apihandler.go
+20
-1
src/app/backend/events.go
src/app/backend/events.go
+89
-0
未找到文件。
src/app/backend/apihandler.go
浏览文件 @
150bba46
...
...
@@ -74,6 +74,15 @@ func CreateHttpApiHandler(client *client.Client) http.Handler {
Writes
(
Logs
{}))
wsContainer
.
Add
(
logsWs
)
eventsWs
:=
new
(
restful
.
WebService
)
eventsWs
.
Path
(
"/api/events"
)
.
Produces
(
restful
.
MIME_JSON
)
eventsWs
.
Route
(
eventsWs
.
GET
(
"/{namespace}"
)
.
To
(
apiHandler
.
handleEvents
)
.
Writes
(
Events
{}))
wsContainer
.
Add
(
eventsWs
)
return
wsContainer
}
...
...
@@ -155,7 +164,6 @@ func (apiHandler *ApiHandler) handleGetNamespaces(
// Handles log API call.
func
(
apiHandler
*
ApiHandler
)
handleLogs
(
request
*
restful
.
Request
,
response
*
restful
.
Response
)
{
namespace
:=
request
.
PathParameter
(
"namespace"
)
podId
:=
request
.
PathParameter
(
"podId"
)
result
,
err
:=
GetPodLogs
(
apiHandler
.
client
,
namespace
,
podId
)
...
...
@@ -166,6 +174,17 @@ func (apiHandler *ApiHandler) handleLogs(request *restful.Request, response *res
response
.
WriteHeaderAndEntity
(
http
.
StatusCreated
,
result
)
}
// Handles event API call.
func
(
apiHandler
*
ApiHandler
)
handleEvents
(
request
*
restful
.
Request
,
response
*
restful
.
Response
)
{
namespace
:=
request
.
PathParameter
(
"namespace"
)
result
,
err
:=
GetEvents
(
apiHandler
.
client
,
namespace
)
if
err
!=
nil
{
handleInternalError
(
response
,
err
)
return
}
response
.
WriteHeaderAndEntity
(
http
.
StatusCreated
,
result
)
}
// Handler that writes the given error to the response and sets appropriate HTTP status headers.
func
handleInternalError
(
response
*
restful
.
Response
,
err
error
)
{
response
.
AddHeader
(
"Content-Type"
,
"text/plain"
)
...
...
src/app/backend/events.go
0 → 100644
浏览文件 @
150bba46
// Copyright 2015 Google Inc. 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.
package
main
import
(
"k8s.io/kubernetes/pkg/api/unversioned"
client
"k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
)
// Events response structure.
type
Events
struct
{
// Namespace.
Namespace
string
`json:"namespace"`
// List of events from given namespace.
Events
[]
Event
`json:"events"`
}
// Single event representation.
type
Event
struct
{
// Event message.
Message
string
`json:"message"`
// Component from which the event is generated.
SourceComponent
string
`json:"sourceComponent"`
// Host name on which the event is generated.
SourceHost
string
`json:"sourceHost"`
// Reference to a piece of an object, which triggered an event. For example
// "spec.containers{name}" refers to container within pod with given name, if no container
// name is specified, for example "spec.containers[2]", then it refers to container with
// index 2 in this pod.
SubObject
string
`json:"object"`
// The number of times this event has occurred.
Count
int
`json:"count"`
// The time at which the event was first recorded.
FirstSeen
unversioned
.
Time
`json:"firstSeen"`
// The time at which the most recent occurrence of this event was recorded.
LastSeen
unversioned
.
Time
`json:"lastSeen"`
// Reason why this event was generated.
Reason
string
`json:"reason"`
}
// Return events for particular namespace or error if occurred.
func
GetEvents
(
client
*
client
.
Client
,
namespace
string
)
(
*
Events
,
error
)
{
list
,
err
:=
client
.
Events
(
namespace
)
.
List
(
labels
.
Everything
(),
fields
.
Everything
())
if
err
!=
nil
{
return
nil
,
err
}
events
:=
&
Events
{
Namespace
:
namespace
,
}
for
_
,
element
:=
range
list
.
Items
{
events
.
Events
=
append
(
events
.
Events
,
Event
{
Message
:
element
.
Message
,
SourceComponent
:
element
.
Source
.
Component
,
SourceHost
:
element
.
Source
.
Host
,
SubObject
:
element
.
InvolvedObject
.
FieldPath
,
Count
:
element
.
Count
,
FirstSeen
:
element
.
FirstTimestamp
,
LastSeen
:
element
.
LastTimestamp
,
Reason
:
element
.
Reason
,
})
}
return
events
,
nil
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录