tosca-parser/toscaparser/repositories.py

53 lines
2.3 KiB
Python

# 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.
from toscaparser.common.exception import ExceptionCollector
from toscaparser.common.exception import MissingRequiredFieldError
from toscaparser.common.exception import UnknownFieldError
from toscaparser.common.exception import URLException
from toscaparser.utils.gettextutils import _
import toscaparser.utils.urlutils
SECTIONS = (DESCRIPTION, URL, CREDENTIAL) = \
('description', 'url', 'credential')
class Repository(object):
def __init__(self, repositories, values):
self.name = repositories
self.reposit = values
if isinstance(self.reposit, dict):
if 'url' not in self.reposit.keys():
ExceptionCollector.appendException(
MissingRequiredFieldError(what=_('Repository "%s"')
% self.name, required='url'))
self.url = self.reposit['url']
self.load_and_validate(self.name, self.reposit)
def load_and_validate(self, val, reposit_def):
self.keyname = val
if isinstance(reposit_def, dict):
for key in reposit_def.keys():
if key not in SECTIONS:
ExceptionCollector.appendException(
UnknownFieldError(what=_('repositories "%s"')
% self.keyname, field=key))
if URL in reposit_def.keys():
reposit_url = reposit_def.get(URL)
url_val = toscaparser.utils.urlutils.UrlUtils.\
validate_url(reposit_url)
if url_val is not True:
ExceptionCollector.appendException(
URLException(what=_('repsositories "%s" Invalid Url')
% self.keyname))