mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-18 08:41:10 +02:00
f0ebd17994
Build base image step should be in build package workflow, and local base images build by new step should be removed since images have been pushed to docker hub. Signed-off-by: danfengliu <danfengl@vmware.com>
96 lines
4.9 KiB
Python
96 lines
4.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import base
|
|
import v2_swagger_client
|
|
from v2_swagger_client.rest import ApiException
|
|
|
|
class Tag_Immutability(base.Base, object):
|
|
def __init__(self):
|
|
super(Tag_Immutability,self).__init__(api_type = "immutable")
|
|
|
|
def create_tag_immutability_policy_rule(self, project_id, selector_repository_decoration = "repoMatches",
|
|
selector_repository="**", selector_tag_decoration = "matches",
|
|
selector_tag="**", expect_status_code = 201, **kwargs):
|
|
#repoExcludes,excludes
|
|
immutable_rule = v2_swagger_client.ImmutableRule(
|
|
action="immutable",
|
|
template="immutable_template",
|
|
priority = 0,
|
|
scope_selectors={
|
|
"repository": [
|
|
{
|
|
"kind": "doublestar",
|
|
"decoration": selector_repository_decoration,
|
|
"pattern": selector_repository
|
|
}
|
|
]
|
|
},
|
|
tag_selectors=[
|
|
{
|
|
"kind": "doublestar",
|
|
"decoration": selector_tag_decoration,
|
|
"pattern": selector_tag
|
|
}
|
|
]
|
|
)
|
|
try:
|
|
_, status_code, header = self._get_client(**kwargs).create_immu_rule_with_http_info(project_id, immutable_rule)
|
|
except ApiException as e:
|
|
base._assert_status_code(expect_status_code, e.status)
|
|
else:
|
|
base._assert_status_code(expect_status_code, status_code)
|
|
base._assert_status_code(201, status_code)
|
|
return base._get_id_from_header(header)
|
|
|
|
def list_tag_immutability_policy_rules(self, project_id, **kwargs):
|
|
return self._get_client(**kwargs).list_immu_rules_with_http_info(project_id)
|
|
|
|
def get_rule(self, project_id, rule_id, **kwargs):
|
|
rules = self.list_tag_immutability_policy_rules(project_id, **kwargs)
|
|
if len(rules) <= 0:
|
|
return None
|
|
for r in rules[0]:
|
|
if r.id == rule_id:
|
|
return r
|
|
return None
|
|
|
|
def update_tag_immutability_policy_rule(self, project_id, rule_id, selector_repository_decoration = None,
|
|
selector_repository=None, selector_tag_decoration = None,
|
|
selector_tag=None, disabled = None, expect_status_code = 200, **kwargs):
|
|
rule = self.get_rule( project_id, rule_id,**kwargs)
|
|
if selector_repository_decoration:
|
|
rule.scope_selectors["repository"][0].decoration = selector_repository_decoration
|
|
if selector_repository:
|
|
rule.scope_selectors["repository"][0].pattern = selector_repository
|
|
if selector_tag_decoration:
|
|
rule.tag_selectors[0].decoration = selector_tag_decoration
|
|
if selector_tag:
|
|
rule.tag_selectors[0].pattern = selector_tag
|
|
if disabled is not None:
|
|
rule.disabled = disabled
|
|
try:
|
|
_, status_code, header = self._get_client(**kwargs).update_immu_rule_with_http_info(project_id, rule_id, rule)
|
|
except ApiException as e:
|
|
base._assert_status_code(expect_status_code, e.status)
|
|
if expect_response_body is not None:
|
|
base._assert_status_body(expect_response_body, e.body)
|
|
else:
|
|
base._assert_status_code(expect_status_code, status_code)
|
|
base._assert_status_code(200, status_code)
|
|
return base._get_id_from_header(header)
|
|
|
|
def create_rule(self, project_id, selector_repository_decoration = "repoMatches", selector_repository="**",
|
|
selector_tag_decoration = "matches", selector_tag="**",
|
|
expect_status_code = 201, disabled = False, **kwargs):
|
|
rule_id = self.create_tag_immutability_policy_rule(project_id, selector_repository_decoration = selector_repository_decoration,
|
|
selector_repository = selector_repository,
|
|
selector_tag_decoration = selector_tag_decoration,
|
|
selector_tag = selector_tag, expect_status_code = expect_status_code, **kwargs)
|
|
if expect_status_code != 201:
|
|
return
|
|
self.update_tag_immutability_policy_rule(project_id, rule_id, selector_repository_decoration = selector_repository_decoration,
|
|
selector_repository = selector_repository, selector_tag_decoration = selector_tag_decoration,
|
|
selector_tag = selector_tag, disabled = disabled, expect_status_code = 200, **kwargs)
|
|
return rule_id
|
|
|