Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
CSAN
Csan
Commits
78927af0
Commit
78927af0
authored
Jul 17, 2020
by
chlins
Browse files
fix(preheat): fix preheat handler PingInstance and UpdateInstance
Signed-off-by:
chlins
<
chlins.zhang@gmail.com
>
parent
af3a6389
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
89 additions
and
44 deletions
+89
-44
api/v2.0/swagger.yaml
api/v2.0/swagger.yaml
+6
-6
make/migrations/postgresql/0040_2.1.0_schema.up.sql
make/migrations/postgresql/0040_2.1.0_schema.up.sql
+1
-1
src/controller/p2p/preheat/controller.go
src/controller/p2p/preheat/controller.go
+8
-5
src/controller/p2p/preheat/controllor_test.go
src/controller/p2p/preheat/controllor_test.go
+29
-12
src/portal/src/app/distribution/distribution-instances/distribution-instances.component.ts
...istribution-instances/distribution-instances.component.ts
+9
-7
src/portal/src/app/distribution/distribution-setup-modal/distribution-setup-modal.component.ts
...ibution-setup-modal/distribution-setup-modal.component.ts
+7
-8
src/server/v2.0/handler/preheat.go
src/server/v2.0/handler/preheat.go
+29
-5
No files found.
api/v2.0/swagger.yaml
View file @
78927af0
...
...
@@ -817,15 +817,12 @@ paths:
parameters
:
-
$ref
:
'
#/parameters/requestId'
-
$ref
:
'
#/parameters/instanceName'
-
name
:
propertySet
-
name
:
instance
in
:
body
description
:
The
property set
to update
description
:
The
instance
to update
required
:
true
schema
:
type
:
object
additionalProperties
:
type
:
object
additionalProperties
:
true
$ref
:
'
#/definitions/Instance'
responses
:
'
200'
:
description
:
Success
...
...
@@ -1767,6 +1764,9 @@ definitions:
provider_id
:
type
:
integer
description
:
The ID of preheat policy provider
provider_name
:
type
:
string
description
:
The Name of preheat policy provider
filters
:
type
:
string
description
:
The Filters of preheat policy
...
...
make/migrations/postgresql/0040_2.1.0_schema.up.sql
View file @
78927af0
...
...
@@ -61,7 +61,7 @@ CREATE TABLE IF NOT EXISTS p2p_preheat_policy (
project_id
int
NOT
NULL
,
provider_id
int
NOT
NULL
,
filters
varchar
(
1024
),
trigger
varchar
(
16
),
trigger
varchar
(
255
),
enabled
boolean
,
creation_time
timestamp
,
update_time
timestamp
,
...
...
src/controller/p2p/preheat/controller.go
View file @
78927af0
...
...
@@ -26,7 +26,6 @@ var ErrorUnhealthy = errors.New("instance unhealthy")
// Controller defines related top interfaces to handle the workflow of
// the image distribution.
// TODO: Add health check API
type
Controller
interface
{
// Get all the supported distribution providers
//
...
...
@@ -183,10 +182,6 @@ func (c *controller) DeleteInstance(ctx context.Context, id int64) error {
// UpdateInstance implements @Controller.Update
func
(
c
*
controller
)
UpdateInstance
(
ctx
context
.
Context
,
instance
*
providerModels
.
Instance
,
properties
...
string
)
error
{
if
len
(
properties
)
==
0
{
return
errors
.
New
(
"no properties provided to update"
)
}
return
c
.
iManager
.
Update
(
ctx
,
instance
,
properties
...
)
}
...
...
@@ -206,6 +201,11 @@ func (c *controller) CountPolicy(ctx context.Context, query *q.Query) (int64, er
// CreatePolicy creates the policy.
func
(
c
*
controller
)
CreatePolicy
(
ctx
context
.
Context
,
schema
*
policyModels
.
Schema
)
(
int64
,
error
)
{
if
schema
!=
nil
{
now
:=
time
.
Now
()
schema
.
CreatedAt
=
now
schema
.
UpdatedTime
=
now
}
return
c
.
pManager
.
Create
(
ctx
,
schema
)
}
...
...
@@ -221,6 +221,9 @@ func (c *controller) GetPolicyByName(ctx context.Context, projectID int64, name
// UpdatePolicy updates the policy.
func
(
c
*
controller
)
UpdatePolicy
(
ctx
context
.
Context
,
schema
*
policyModels
.
Schema
,
props
...
string
)
error
{
if
schema
!=
nil
{
schema
.
UpdatedTime
=
time
.
Now
()
}
return
c
.
pManager
.
Update
(
ctx
,
schema
,
props
...
)
}
...
...
src/controller/p2p/preheat/controllor_test.go
View file @
78927af0
...
...
@@ -157,22 +157,18 @@ func (s *preheatSuite) TestCreateInstance() {
}
func
(
s
*
preheatSuite
)
TestDeleteInstance
()
{
//
err := s.controller.DeleteInstance(s.ctx, 0)
//
s.Error(err)
err
:=
s
.
controller
.
DeleteInstance
(
s
.
ctx
,
0
)
s
.
Error
(
err
)
err
:
=
s
.
controller
.
DeleteInstance
(
s
.
ctx
,
int64
(
1
))
err
=
s
.
controller
.
DeleteInstance
(
s
.
ctx
,
int64
(
1
))
s
.
NoError
(
err
)
}
func
(
s
*
preheatSuite
)
TestUpdateInstance
()
{
// TODO: test update more
s
.
fakeInstanceMgr
.
On
(
"Update"
,
s
.
ctx
,
nil
)
.
Return
(
errors
.
New
(
"no properties provided to update"
))
s
.
fakeInstanceMgr
.
On
(
"Update"
,
s
.
ctx
,
mock
.
Anything
)
.
Return
(
errors
.
New
(
"no properties provided to update"
))
err
:=
s
.
controller
.
UpdateInstance
(
s
.
ctx
,
nil
)
s
.
Error
(
err
)
err
=
s
.
controller
.
UpdateInstance
(
s
.
ctx
,
&
providerModel
.
Instance
{
ID
:
0
})
s
.
Error
(
err
)
s
.
fakeInstanceMgr
.
On
(
"Update"
,
mock
.
Anything
,
mock
.
Anything
,
mock
.
Anything
)
.
Return
(
nil
)
err
=
s
.
controller
.
UpdateInstance
(
s
.
ctx
,
&
providerModel
.
Instance
{
ID
:
1
},
"enabled"
)
s
.
NoError
(
err
)
...
...
@@ -192,10 +188,13 @@ func (s *preheatSuite) TestCountPolicy() {
}
func
(
s
*
preheatSuite
)
TestCreatePolicy
()
{
s
.
fakePolicyMgr
.
On
(
"Create"
,
s
.
ctx
,
mock
.
Anything
)
.
Return
(
int64
(
1
),
nil
)
id
,
err
:=
s
.
controller
.
CreatePolicy
(
s
.
ctx
,
nil
)
policy
:=
&
policy
.
Schema
{
Name
:
"test"
}
s
.
fakePolicyMgr
.
On
(
"Create"
,
s
.
ctx
,
policy
)
.
Return
(
int64
(
1
),
nil
)
id
,
err
:=
s
.
controller
.
CreatePolicy
(
s
.
ctx
,
policy
)
s
.
NoError
(
err
)
s
.
Equal
(
int64
(
1
),
id
)
s
.
False
(
policy
.
CreatedAt
.
IsZero
())
s
.
False
(
policy
.
UpdatedTime
.
IsZero
())
}
func
(
s
*
preheatSuite
)
TestGetPolicy
()
{
...
...
@@ -213,9 +212,11 @@ func (s *preheatSuite) TestGetPolicyByName() {
}
func
(
s
*
preheatSuite
)
TestUpdatePolicy
()
{
s
.
fakePolicyMgr
.
On
(
"Update"
,
s
.
ctx
,
mock
.
Anything
,
mock
.
Anything
)
.
Return
(
nil
)
err
:=
s
.
controller
.
UpdateInstance
(
s
.
ctx
,
nil
,
""
)
policy
:=
&
policy
.
Schema
{
Name
:
"test"
}
s
.
fakePolicyMgr
.
On
(
"Update"
,
s
.
ctx
,
policy
,
mock
.
Anything
)
.
Return
(
nil
)
err
:=
s
.
controller
.
UpdatePolicy
(
s
.
ctx
,
policy
,
""
)
s
.
NoError
(
err
)
s
.
False
(
policy
.
UpdatedTime
.
IsZero
())
}
func
(
s
*
preheatSuite
)
TestDeletePolicy
()
{
...
...
@@ -259,6 +260,22 @@ func (s *preheatSuite) TestCheckHealth() {
err
=
s
.
controller
.
CheckHealth
(
s
.
ctx
,
instance
)
s
.
Error
(
err
)
// not health
// health
instance
=
&
providerModel
.
Instance
{
ID
:
1
,
Name
:
"test-instance"
,
Vendor
:
provider
.
DriverDragonfly
,
Endpoint
:
"http://127.0.0.1"
,
AuthMode
:
auth
.
AuthModeNone
,
Enabled
:
true
,
Default
:
true
,
Insecure
:
true
,
Status
:
"Unknown"
,
}
err
=
s
.
controller
.
CheckHealth
(
s
.
ctx
,
instance
)
s
.
Error
(
err
)
// health
instance
=
&
providerModel
.
Instance
{
ID
:
1
,
...
...
src/portal/src/app/distribution/distribution-instances/distribution-instances.component.ts
View file @
78927af0
...
...
@@ -167,8 +167,10 @@ export class DistributionInstancesComponent implements OnInit, OnDestroy {
operMessage
.
state
=
OperationState
.
progressing
;
operMessage
.
data
.
name
=
this
.
selectedRow
[
0
].
name
;
this
.
operationService
.
publishInfo
(
operMessage
);
const
instance
:
Instance
=
clone
(
this
.
selectedRow
[
0
]);
instance
.
default
=
true
;
this
.
disService
.
UpdateInstance
({
propertySet
:
{
default
:
true
}
,
instance
:
instance
,
preheatInstanceName
:
this
.
selectedRow
[
0
].
name
})
.
subscribe
(
...
...
@@ -300,11 +302,11 @@ export class DistributionInstancesComponent implements OnInit, OnDestroy {
operMessage
.
state
=
OperationState
.
progressing
;
operMessage
.
data
.
name
=
instance
.
name
;
this
.
operationService
.
publishInfo
(
operMessage
);
i
nstance
.
enabled
=
true
;
const
copiedInstance
:
Instance
=
clone
(
instance
);
copiedI
nstance
.
enabled
=
true
;
return
this
.
disService
.
UpdateInstance
({
propertySet
:
{
enabled
:
true
}
,
instance
:
copiedInstance
,
preheatInstanceName
:
instance
.
name
})
.
pipe
(
...
...
@@ -334,11 +336,11 @@ export class DistributionInstancesComponent implements OnInit, OnDestroy {
operMessage
.
state
=
OperationState
.
progressing
;
operMessage
.
data
.
name
=
instance
.
name
;
this
.
operationService
.
publishInfo
(
operMessage
);
i
nstance
.
enabled
=
false
;
const
copiedInstance
:
Instance
=
clone
(
instance
);
copiedI
nstance
.
enabled
=
false
;
return
this
.
disService
.
UpdateInstance
({
propertySet
:
{
enabled
:
false
}
,
instance
:
copiedInstance
,
preheatInstanceName
:
instance
.
name
})
.
pipe
(
...
...
src/portal/src/app/distribution/distribution-setup-modal/distribution-setup-modal.component.ts
View file @
78927af0
...
...
@@ -105,13 +105,6 @@ export class DistributionSetupModalComponent implements OnInit {
submit
()
{
if
(
this
.
editingMode
)
{
const
data
:
Instance
=
{
endpoint
:
this
.
model
.
endpoint
,
enabled
:
this
.
model
.
enabled
,
description
:
this
.
model
.
description
,
auth_mode
:
this
.
model
.
auth_mode
,
auth_info
:
this
.
model
.
auth_info
};
const
operMessageForEdit
=
new
OperateInfo
();
operMessageForEdit
.
name
=
'
DISTRIBUTION.UPDATE_INSTANCE
'
;
operMessageForEdit
.
data
.
id
=
this
.
model
.
id
;
...
...
@@ -119,7 +112,13 @@ export class DistributionSetupModalComponent implements OnInit {
operMessageForEdit
.
data
.
name
=
this
.
model
.
name
;
this
.
operationService
.
publishInfo
(
operMessageForEdit
);
this
.
saveBtnState
=
ClrLoadingState
.
LOADING
;
this
.
distributionService
.
UpdateInstance
({
preheatInstanceName
:
this
.
model
.
name
,
propertySet
:
data
const
instance
:
Instance
=
clone
(
this
.
originModelForEdit
);
instance
.
endpoint
=
this
.
model
.
endpoint
;
instance
.
enabled
=
this
.
model
.
enabled
;
instance
.
description
=
this
.
model
.
description
;
instance
.
auth_mode
=
this
.
model
.
auth_mode
;
instance
.
auth_info
=
this
.
model
.
auth_info
;
this
.
distributionService
.
UpdateInstance
({
preheatInstanceName
:
this
.
model
.
name
,
instance
:
instance
}).
subscribe
(
response
=>
{
this
.
translate
.
get
(
'
DISTRIBUTION.UPDATE_SUCCESS
'
).
subscribe
(
msg
=>
{
...
...
src/server/v2.0/handler/preheat.go
View file @
78927af0
...
...
@@ -163,8 +163,17 @@ func (api *preheatAPI) UpdateInstance(ctx context.Context, params operation.Upda
return
api
.
SendError
(
ctx
,
err
)
}
var
payload
*
models
.
InstanceUpdateResp
return
operation
.
NewUpdateInstanceOK
()
.
WithPayload
(
payload
)
instance
,
err
:=
convertParamInstanceToModelInstance
(
params
.
Instance
)
if
err
!=
nil
{
return
api
.
SendError
(
ctx
,
err
)
}
err
=
api
.
preheatCtl
.
UpdateInstance
(
ctx
,
instance
)
if
err
!=
nil
{
return
api
.
SendError
(
ctx
,
err
)
}
return
operation
.
NewUpdateInstanceOK
()
}
func
convertProvidersToFrontend
(
backend
[]
*
provider
.
Metadata
)
(
frontend
[]
*
models
.
Metadata
)
{
...
...
@@ -199,10 +208,18 @@ func (api *preheatAPI) GetPolicy(ctx context.Context, params operation.GetPolicy
return
api
.
SendError
(
ctx
,
err
)
}
// get provider
provider
,
err
:=
api
.
preheatCtl
.
GetInstance
(
ctx
,
policy
.
ProviderID
)
if
err
!=
nil
{
return
api
.
SendError
(
ctx
,
err
)
}
payload
,
err
=
convertPolicyToPayload
(
policy
)
if
err
!=
nil
{
return
api
.
SendError
(
ctx
,
err
)
}
payload
.
ProviderName
=
provider
.
Name
return
operation
.
NewGetPolicyOK
()
.
WithPayload
(
payload
)
}
...
...
@@ -298,10 +315,17 @@ func (api *preheatAPI) ListPolicies(ctx context.Context, params operation.ListPo
var
payload
[]
*
models
.
PreheatPolicy
for
_
,
policy
:=
range
policies
{
// get provider
provider
,
err
:=
api
.
preheatCtl
.
GetInstance
(
ctx
,
policy
.
ProviderID
)
if
err
!=
nil
{
return
api
.
SendError
(
ctx
,
err
)
}
p
,
err
:=
convertPolicyToPayload
(
policy
)
if
err
!=
nil
{
return
api
.
SendError
(
ctx
,
err
)
}
p
.
ProviderName
=
provider
.
Name
payload
=
append
(
payload
,
p
)
}
return
operation
.
NewListPoliciesOK
()
.
WithPayload
(
payload
)
.
WithXTotalCount
(
total
)
.
...
...
@@ -350,7 +374,7 @@ func (api *preheatAPI) PingInstances(ctx context.Context, params operation.PingI
return
operation
.
NewPingInstancesNotFound
()
}
if
err
!=
nil
{
api
.
SendError
(
ctx
,
err
)
return
api
.
SendError
(
ctx
,
err
)
}
}
else
{
// by endpoint URL
...
...
@@ -360,13 +384,13 @@ func (api *preheatAPI) PingInstances(ctx context.Context, params operation.PingI
instance
,
err
=
convertParamInstanceToModelInstance
(
params
.
Instance
)
if
err
!=
nil
{
api
.
SendError
(
ctx
,
err
)
return
api
.
SendError
(
ctx
,
err
)
}
}
err
=
api
.
preheatCtl
.
CheckHealth
(
ctx
,
instance
)
if
err
!=
nil
{
api
.
SendError
(
ctx
,
err
)
return
api
.
SendError
(
ctx
,
err
)
}
return
operation
.
NewPingInstancesOK
()
...
...
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