Ejemplo n.º 1
0
    def __init__(self,
                 subject,
                 resource_id=DEFAULT_RESOURCE_ID,
                 host=None,
                 agent=None):
        """
        Instance of a YoucatClient
        :param subject: the subject performing the action
        :type cadcutils.auth.Subject
        :param resource_id: the resource ID of the service
        :param host: Host for the caom2repo service
        :param agent: The name of the agent (to be used in server logging)
        """
        self.logger = logging.getLogger('YoucatClient')
        self.resource_id = resource_id
        self.host = host
        self._subject = subject
        if agent is None:
            agent = "cadc-tap-client/{}".format(version.version)

        self.agent = agent

        self._tap_client = net.BaseWsClient(resource_id,
                                            subject,
                                            agent,
                                            retry=True,
                                            host=self.host)
Ejemplo n.º 2
0
    def __init__(self,
                 subject,
                 logLevel=logging.INFO,
                 resource_id=DEFAULT_RESOURCE_ID,
                 host=None,
                 agent=None):
        """
        Instance of a CAOM2RepoClient
        :param subject: the subject performing the action
        :type cadcutils.auth.Subject
        :param server: Host server for the caom2repo service
        """
        self.level = logLevel
        logging.basicConfig(
            format='%(asctime)s %(process)d %(levelname)-8s %(name)-12s ' +
            '%(funcName)s %(message)s',
            level=logLevel,
            stream=sys.stdout)
        self.logger = logging.getLogger('CAOM2RepoClient')
        self.resource_id = resource_id
        self.host = host
        self._subject = subject
        if agent is None:
            agent = "caom2-repo-client/{} caom2/{}".format(
                version.version, caom2_version)

        self.agent = agent

        self._repo_client = net.BaseWsClient(resource_id,
                                             subject,
                                             agent,
                                             retry=True,
                                             host=self.host)
Ejemplo n.º 3
0
def read_file_list_from_archive(config):
    ad_resource_id = 'ivo://cadc.nrc.ca/ad'
    agent = 'vlass2caom2/1.0'
    subject = net.Subject(certificate=config.proxy_fqn)
    client = net.BaseWsClient(
        resource_id=ad_resource_id,
        subject=subject,
        agent=agent,
        retry=True,
    )
    query_meta = (f"SELECT fileName FROM archive_files WHERE archiveName = "
                  f"'{config.archive}'")
    data = {'QUERY': query_meta, 'LANG': 'ADQL', 'FORMAT': 'csv'}
    logging.debug(f'Query is {query_meta}')
    try:
        response = client.get(
            f'https://{client.host}/ad/sync?{parse.urlencode((data))}',
            cert=config.proxy_fqn,
        )
        if response.status_code == 200:
            # ignore the column name as the first part of the response
            artifact_files_list = response.text.split()[1:]
            return artifact_files_list
        else:
            raise mc.CadcException(f'Query failure {response}')
    except Exception as e:
        raise mc.CadcException(f'Failed ad content query: {e}')
Ejemplo n.º 4
0
    def __init__(self, subject, resource_id=DEFAULT_RESOURCE_ID, host=None):
        """
        Instance of a CAOM2RepoClient
        :param subject: the subject performing the action
        :type cadcutils.auth.Subject
        :param server: Host server for the caom2repo service
        """
        agent = '{}/{}'.format(APP_NAME, version.version)
        self.host = host
        self._repo_client = net.BaseWsClient(resource_id,
                                             subject,
                                             agent,
                                             retry=True,
                                             host=host)

        agent = "caom2-repo-client/{} caom2/{}".format(version.version,
                                                       caom2_version)

        self._repo_client = net.BaseWsClient(resource_id,
                                             subject,
                                             agent,
                                             retry=True,
                                             host=self.host)
Ejemplo n.º 5
0
    def __init__(self,
                 subject,
                 logLevel=logging.INFO,
                 resource_id=DEFAULT_RESOURCE_ID,
                 host=None,
                 agent=None):
        """
        Instance of a CAOM2RepoClient
        :param subject: the subject performing the action
        :type cadcutils.auth.Subject
        :param resource_id: the resource ID of the service
        :param host: Host for the caom2repo service
        :param agent: The name of the agent (to be used in server logging)
        """
        self.level = logLevel
        logging.basicConfig(
            format='%(asctime)s %(process)d %(levelname)-8s %(name)-12s ' +
            '%(funcName)s %(message)s',
            level=logLevel,
            stream=sys.stdout)
        self.logger = logging.getLogger('CAOM2RepoClient')
        self.resource_id = resource_id
        self.host = host
        self._subject = subject
        if agent is None:
            agent = "caom2-repo-client/{} caom2/{}".format(
                version.version, caom2_version)

        self.agent = agent

        self._repo_client = net.BaseWsClient(resource_id,
                                             subject,
                                             agent,
                                             retry=True,
                                             host=self.host,
                                             idempotent_posts=True)
        try:
            self._repo_client.caps.get_access_url(
                CURRENT_CAOM2REPO_OBS_CAPABILITY_ID)
            self.capability_id = CURRENT_CAOM2REPO_OBS_CAPABILITY_ID
            self.namespace = obs_reader_writer.CAOM24_NAMESPACE
        except KeyError:
            self._repo_client.caps.get_access_url(
                PREVIOUS_CAOM2REPO_OBS_CAPABILITY_ID)
            self.capability_id = PREVIOUS_CAOM2REPO_OBS_CAPABILITY_ID
            self.namespace = obs_reader_writer.CAOM23_NAMESPACE
Ejemplo n.º 6
0
    def __init__(self, subject, resource_id=DEFAULT_RESOURCE_ID, host=None):
        """
        Instance of a CadcDataClient
        :param subject: the subject(user) performing the action
        :type subject: cadcutils.net.Subject
        :param resource_id: The identifier of the service resource
                            (e.g 'ivo://cadc.nrc.ca/data')
        :param host: Host server for the caom2repo service
        """

        self.resource_id = resource_id
        self._transfer_writer = TransferWriter()
        self._transfer_reader = TransferReader()

        self.host = host

        agent = "{}/{}".format(APP_NAME, version.version)

        self._data_client = net.BaseWsClient(resource_id, subject,
                                             agent, retry=True, host=self.host)
Ejemplo n.º 7
0
def read_file_list_from_archive(config):
    ad_resource_id = 'ivo://cadc.nrc.ca/ad'
    agent = '{}/{}'.format(APPLICATION, '1.0')
    subject = net.Subject(certificate=config.proxy_fqn)
    client = net.BaseWsClient(resource_id=ad_resource_id,
                              subject=subject, agent=agent, retry=True)
    query_meta = "SELECT fileName FROM archive_files WHERE " \
                 "archiveName = '{}'".format(config.archive)
    data = {'QUERY': query_meta, 'LANG': 'ADQL', 'FORMAT': 'csv'}
    logging.debug('Query is {}'.format(query_meta))
    try:
        response = client.get('https://{}/ad/sync?{}'.format(
            client.host, parse.urlencode(data)), cert=config.proxy_fqn)
        if response.status_code == 200:
            # ignore the column name as the first part of the response
            artifact_files_list = response.text.split()[1:]
            return artifact_files_list
        else:
            raise mc.CadcException('Query failure {!r}'.format(response))
    except Exception as e:
        raise mc.CadcException('Failed ad content query: {}'.format(e))