2 # Licensed under the Apache License, Version 2.0 (the "License"); you may
3 # not use this file except in compliance with the License. You may obtain
4 # a copy of the License at
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11 # License for the specific language governing permissions and limitations
19 from osmclient
.common
import utils
20 from osmclient
.common
.exceptions
import ClientException
21 from osmclient
.common
.exceptions
import NotFound
26 def __init__(self
, http
=None, client
=None):
29 self
._apiName
= "/admin"
30 self
._apiVersion
= "/v1"
31 self
._apiResource
= "/k8srepos"
32 self
._apiBase
= "{}{}{}".format(
33 self
._apiName
, self
._apiVersion
, self
._apiResource
36 def create(self
, name
, repo
):
37 self
._client
.get_token()
38 http_code
, resp
= self
._http
.post_cmd(
39 endpoint
=self
._apiBase
, postfields_dict
=repo
41 # print 'HTTP CODE: {}'.format(http_code)
42 # print 'RESP: {}'.format(resp)
43 # if http_code in (200, 201, 202, 204):
45 resp
= json
.loads(resp
)
46 if not resp
or "id" not in resp
:
47 raise ClientException("unexpected response from server - {}".format(resp
))
53 # msg = json.loads(resp)
56 # raise ClientException("failed to add repo {} - {}".format(name, msg))
58 def update(self
, name
, repo
):
59 self
._client
.get_token()
60 repo_dict
= self
.get(name
)
61 http_code
, resp
= self
._http
.put_cmd(
62 endpoint
="{}/{}".format(self
._apiBase
, repo_dict
["_id"]),
65 # print 'HTTP CODE: {}'.format(http_code)
66 # print 'RESP: {}'.format(resp)
67 # if http_code in (200, 201, 202, 204):
73 # msg = json.loads(resp)
76 # raise ClientException("failed to update repo {} - {}".format(name, msg))
78 def get_id(self
, name
):
79 """Returns a repo id from a repo name"""
80 self
._client
.get_token()
81 for repo
in self
.list():
82 if name
== repo
["name"]:
84 raise NotFound("Repo {} not found".format(name
))
86 def delete(self
, name
, force
=False):
87 self
._client
.get_token()
89 if not utils
.validate_uuid4(name
):
90 repo_id
= self
.get_id(name
)
93 querystring
= "?FORCE=True"
94 http_code
, resp
= self
._http
.delete_cmd(
95 "{}/{}{}".format(self
._apiBase
, repo_id
, querystring
)
97 # print 'HTTP CODE: {}'.format(http_code)
98 # print 'RESP: {}'.format(resp)
100 print("Deletion in progress")
101 elif http_code
== 204:
107 # msg = json.loads(resp)
110 raise ClientException("failed to delete repo {} - {}".format(name
, msg
))
112 def list(self
, filter=None):
113 """Returns a list of repos"""
114 self
._client
.get_token()
117 filter_string
= "?{}".format(filter)
118 _
, resp
= self
._http
.get2_cmd("{}{}".format(self
._apiBase
, filter_string
))
120 return json
.loads(resp
)
124 """Returns a repo based on name or id"""
125 self
._client
.get_token()
127 if not utils
.validate_uuid4(name
):
128 repo_id
= self
.get_id(name
)
130 _
, resp
= self
._http
.get2_cmd("{}/{}".format(self
._apiBase
, repo_id
))
132 resp
= json
.loads(resp
)
133 if not resp
or "_id" not in resp
:
134 raise ClientException("failed to get repo info: {}".format(resp
))
137 raise NotFound("Repo {} not found".format(name
))