X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Ftasklets%2Frwlaunchpad%2Fonboard.py;fp=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Ftasklets%2Frwlaunchpad%2Fonboard.py;h=636880f4a86baea9a9c94adec1624997f23be28c;hb=81e7ba58f7b5f3a169a0bbc7640a04b52e5e4722;hp=b12e192fc4f51a7101578e1b8c085c979438e755;hpb=1710c5baaf44e962f63273f5f04e9bbcc62aa2e5;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/onboard.py b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/onboard.py index b12e192f..636880f4 100644 --- a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/onboard.py +++ b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/tasklets/rwlaunchpad/onboard.py @@ -162,3 +162,57 @@ class DescriptorOnboarder(object): self._log.error(msg) raise OnboardError(msg) from e + def get_updated_descriptor(self, descriptor_msg, auth=None): + """ Get updated descriptor file + + Arguments: + descriptor_msg - A descriptor proto-gi msg + auth - the authorization header + + Raises: + OnboardError - The descriptor retrieval failed + """ + + if type(descriptor_msg) not in DescriptorOnboarder.DESC_SERIALIZER_MAP: + raise TypeError("Invalid descriptor message type") + + endpoint = DescriptorOnboarder.DESC_ENDPOINT_MAP[type(descriptor_msg)] + + url = "{}://{}:{}/api/config/{}/{}".format( + "https" if self._use_ssl else "http", + self._host, + self.port, + endpoint, + descriptor_msg.id + ) + + hdrs = self._get_headers(auth) + hdrs.update({'Accept': 'application/json'}) + request_args = dict( + url=url, + headers=hdrs, + auth=DescriptorOnboarder.AUTH, + verify=False, + cert=(self._ssl_cert, self._ssl_key) if self._use_ssl else None, + timeout=self.timeout, + ) + + response = None + try: + response = requests.get(**request_args) + response.raise_for_status() + except requests.exceptions.ConnectionError as e: + msg = "Could not connect to restconf endpoint: %s" % str(e) + self._log.error(msg) + raise OnboardError(msg) from e + except requests.exceptions.HTTPError as e: + msg = "GET request to %s error: %s" % (request_args["url"], response.text) + self._log.error(msg) + raise OnboardError(msg) from e + except requests.exceptions.Timeout as e: + msg = "Timed out connecting to restconf endpoint: %s", str(e) + self._log.error(msg) + raise OnboardError(msg) from e + + return response.json() +