diff --git a/.github/workflows/validate-caches.yml b/.github/workflows/validate-caches.yml new file mode 100644 index 000000000..873d9be3d --- /dev/null +++ b/.github/workflows/validate-caches.yml @@ -0,0 +1,20 @@ +name: Validate StashCache configs +on: + schedule: + # Run daily + - cron: '0 0 * * *' + +jobs: + validate-caches: + name: Validate Topology caches + if: startsWith(github.repository, 'opensciencegrid/') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.9.15 + - name: Compare StashCache config lists + run: | + ./src/tests/diff_cache_configs.py diff --git a/.github/workflows/validate-code.yml b/.github/workflows/validate-code.yml index f16966310..b1c384a31 100644 --- a/.github/workflows/validate-code.yml +++ b/.github/workflows/validate-code.yml @@ -10,7 +10,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.6 + python-version: 3.9.15 - name: Install packages run: | sudo apt-get update @@ -23,10 +23,12 @@ jobs: - name: Test API run: | export TOPOLOGY_CONFIG=$PWD/src/config-ci.py + export FLASK_DEBUG=1 py.test ./src/tests/test_api.py - name: Test StashCache run: | export TOPOLOGY_CONFIG=$PWD/src/config-ci.py + export FLASK_DEBUG=1 py.test ./src/tests/test_stashcache.py - name: Test cacher run: | diff --git a/.github/workflows/validate-data.yml b/.github/workflows/validate-data.yml index 76ca3eec5..006996364 100644 --- a/.github/workflows/validate-data.yml +++ b/.github/workflows/validate-data.yml @@ -11,7 +11,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.6 + python-version: 3.9.15 - name: Install packages run: | sudo apt-get update diff --git a/Dockerfile b/Dockerfile index 2489e6c4c..d7ce9532f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM opensciencegrid/software-base:3.6-el8-release +FROM opensciencegrid/software-base:3.6-al8-release # Install dependencies (application, Apache) RUN \ @@ -7,8 +7,8 @@ RUN \ gcc \ git \ libyaml-devel \ - python3-devel \ - python3-pip \ + python39-devel \ + python39-pip \ && yum install -y \ fetch-crl \ httpd \ @@ -19,10 +19,12 @@ RUN \ /usr/bin/pkill \ && yum clean all && rm -rf /var/cache/yum/* +RUN alternatives --set python3 /usr/bin/python3.9 + WORKDIR /app # Install application dependencies -COPY requirements-apache.txt src/ ./ +COPY requirements-apache.txt requirements-rootless.txt ./ RUN pip3 install --no-cache-dir -r requirements-apache.txt # Create data directory, and gather SSH keys for git @@ -36,6 +38,8 @@ RUN echo "45 */6 * * * root /usr/sbin/fetch-crl -q -r 21600 -p 10" > /etc/cron. echo "@reboot root /usr/sbin/fetch-crl -q -p 10" >> /etc/cron.d/fetch-crl && \ echo "0 0 * * * root /usr/bin/pkill -USR1 httpd" > /etc/cron.d/httpd +# Install application +COPY src/ ./ # Set up Apache configuration # Remove default SSL config: default certs don't exist on EL8 so the diff --git a/Dockerfile.client b/Dockerfile.client index 0c2a84a19..c886be02c 100644 --- a/Dockerfile.client +++ b/Dockerfile.client @@ -1,6 +1,6 @@ FROM quay.io/centos/centos:stream8 -LABEL maintainer="OSG Software " +LABEL maintainer="OSG Software " LABEL name="OSG 3.5 OSG-Notify client" RUN yum -y install https://repo.opensciencegrid.org/osg/3.5/osg-3.5-el8-release-latest.rpm \ diff --git a/README.md b/README.md index 08eb7af6b..b8f575064 100644 --- a/README.md +++ b/README.md @@ -146,4 +146,4 @@ for the VO(s) that you support: | LHC VOs | [GGUS](https://ggus.eu) | | Anyone else | [Helpdesk](https://support.opensciencegrid.org) | -Or email us at help@opensciencegrid.org. +Or email us at help@osg-htc.org. diff --git a/bin/next_downtime_id b/bin/next_downtime_id index 7027fab9c..b62303c70 100755 --- a/bin/next_downtime_id +++ b/bin/next_downtime_id @@ -4,6 +4,7 @@ set -o pipefail cd "$(dirname "$0")"/.. unset GREP_OPTIONS -egrep -h '^ *ID: *[0-9]{1,9}\>' topology/*/*/*_downtime.yaml | +# After 18 digits we might start running into integer overflow issues... +egrep -h '^ *ID: *[0-9]{1,18}\>' topology/*/*/*_downtime.yaml | awk '$2 > max {max = $2}; END {print max + 1}' diff --git a/bin/osg-notify b/bin/osg-notify index be2c043a3..b63140658 100755 --- a/bin/osg-notify +++ b/bin/osg-notify @@ -5,6 +5,7 @@ A simple tool for generating notification emails to the OSG """ import os +import re import sys import getpass import smtplib @@ -157,7 +158,12 @@ def network_ok(bypass_dns_check): def replace_smart_quotes_and_dashes(contents): # Replace smart quotes and em/en dashes - replaced = contents.replace('“','"').replace('”','"').replace("–","-").replace("—","-") + regex_sub_map = [(r'[“”]', '"'), + (r'[‘’]', "'"), + (r'[—–]', '-')] + replaced = contents + for pattern, sub in regex_sub_map: + replaced = re.sub(pattern, sub, replaced) return replaced def has_non_printable_ascii_characters(contents): diff --git a/docker/apache.conf b/docker/apache.conf index d1ff1bbaf..a68ab9ba3 100644 --- a/docker/apache.conf +++ b/docker/apache.conf @@ -1,11 +1,11 @@ Listen 8080 Listen 8443 -LoadModule wsgi_module /usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so +LoadModule wsgi_module /usr/local/lib64/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so WSGIPythonPath /app # Run apps in separate processes to stop yaml.CSafeLoader import-time error -WSGIDaemonProcess topology home=/app +WSGIDaemonProcess topology home=/app processes=5 WSGIDaemonProcess topomerge home=/app # vhost for topology, SSL terminated here (for gridsite auth) @@ -35,6 +35,14 @@ WSGIDaemonProcess topomerge home=/app WSGIScriptAlias / /app/topology.wsgi process-group=topology application-group=topology + # Enable compression for text files + AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json + + # Enable memory caching + CacheSocache shmcb + CacheSocacheMaxSize 102400 + CacheEnable socache / + # Separate vhost for map, no SSL required (terminated in traefik) diff --git a/mappings/project_institution.yaml b/mappings/project_institution.yaml index f6ad2ba73..5950a48f4 100644 --- a/mappings/project_institution.yaml +++ b/mappings/project_institution.yaml @@ -10,6 +10,7 @@ BNL: "Brookhaven National Laboratory" BU: "Boston University" BYUI: "Brigham Young University Idaho" Caltech: "California Institute of Technology" +CedarsSinai: "Cedars-Sinai Medical Center" Cincinnati: "University of Cincinnati" Clarkson: "Clarkson University" Coe: "Coe College" @@ -39,6 +40,7 @@ Mines: "Colorado School of Mines" MIT: "Massachusetts Institute of Technology" Mizzou: "University of Missouri" MMC: "Meharry Medical College" +MSKCC: "Memorial Sloan Kettering Cancer Center" MSU: "Montana State University" MTU: "Michigan Technological University" NCSU: "North Carolina State University" @@ -48,21 +50,27 @@ NJIT: "New Jersey Institute of Technology" NMSU: "New Mexico State University" NOAA: "National Oceanic and Atmospheric Administration" Northeastern: "Northeastern University" +NSHE: "Nevada System of Higher Education" +OHSU: "Oregon Health & Science University" OSU: "The Ohio State University" Pitt: "University of Pittsburgh" PortlandState: "Portland State University" +PSI: "Planetary Science Institute" PSU: "Pennsylvania State University" Repertoire: "Repertoire Immune Medicines" Rochester: "University of Rochester" Rowan: "Rowan University" RPI: "Rensselaer Polytechnic Institute" SalemState: "Salem State University" +SBU: "State University of New York at Stony Brook" SIUE: "Southern Illinois University Edwardsville" SDSU: "San Diego State University" +SUNYUpstateMed: "SUNY Upstate Medical University" SWOSU: "Southwest Oklahoma State University" Syracuse: "Syracuse University" TNTech: "Tennessee Tech University" TexasAM: "Texas A&M University" +UALR: "University of Arkansas at Little Rock" UCBerkeley: "University of California, Berkeley" UCDenver: "University of Colorado Denver" UCHC: "University of Connecticut Health Center" @@ -80,6 +88,7 @@ UMCES: "University of Maryland Center for Environmental Science" UMiss: "University of Mississippi" UNL: "University of Nebraska - Lincoln" USD: "University of South Dakota" +USDA: "United States Department of Agriculture" USheffield: "University of Sheffield" UTEP: "University of Texas at El Paso" UTulsa: "University of Tulsa" diff --git a/projects/Arizona_Chan_Steward.yaml b/projects/Arizona_Chan_Steward.yaml new file mode 100644 index 000000000..04817c2e9 --- /dev/null +++ b/projects/Arizona_Chan_Steward.yaml @@ -0,0 +1,6 @@ +Department: Department of Astronomy and Steward Observatory +Description: Scalable astronomical data analytics for the Department of Astronomy + and Steward Observatory at the University of Arizona +FieldOfScience: Physics +Organization: University of Arizona +PIName: Chi-kwan Chan diff --git a/projects/Arkansas_UITSStaff.yaml b/projects/Arkansas_UITSStaff.yaml new file mode 100644 index 000000000..fe22a8dd6 --- /dev/null +++ b/projects/Arkansas_UITSStaff.yaml @@ -0,0 +1,9 @@ +Description: Research computing staff at University of Arkansas https://directory.uark.edu/departmental/uits/university-information-technology-serv +Department: Information Technology +FieldOfScience: Research Computing +Organization: University of Arkansas +PIName: Don DuRousseau + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/BNL_Venugopalan.yaml b/projects/BNL_Venugopalan.yaml new file mode 100644 index 000000000..d9e13ab14 --- /dev/null +++ b/projects/BNL_Venugopalan.yaml @@ -0,0 +1,7 @@ +Description: > + We investigate the dynamics of strongly interacting field theories through a variety of numerical methods, + ranging from classical lattice simulations to tensor network projects. +Department: Physics +FieldOfScience: Physics +Organization: Brookhaven National Laboratory +PIName: Raju Venugopalan diff --git a/projects/BrighamAndWomens_ Baratono.yaml b/projects/BrighamAndWomens_ Baratono.yaml new file mode 100644 index 000000000..c52d5c1b0 --- /dev/null +++ b/projects/BrighamAndWomens_ Baratono.yaml @@ -0,0 +1,5 @@ +Description: Studying how atrophy and connectivity to atrophy impacts cognitive and psychological outcomes in patients with a variety of neurodegenerative disorders +Department: Neurology +FieldOfScience: Biological and Biomedical Sciences +Organization: Brigham and Women's Hospital +PIName: Sheena R Baratono diff --git a/projects/CMB_Petravick.yaml b/projects/CMB_Petravick.yaml new file mode 120000 index 000000000..9947abdfd --- /dev/null +++ b/projects/CMB_Petravick.yaml @@ -0,0 +1 @@ +Illinois_Petravick.yaml \ No newline at end of file diff --git a/projects/CMU_Romagnoli.yaml b/projects/CMU_Romagnoli.yaml new file mode 100644 index 000000000..58e478e8f --- /dev/null +++ b/projects/CMU_Romagnoli.yaml @@ -0,0 +1,9 @@ +Department: Electrical and computer engineering +Description: Deep Reinforcement Learning (RL) for Secure Control of UAVs via Software Rejuvenation +FieldOfScience: Electrical Engineering +Organization: Carnegie-Mellon University +PIName: Raffaele Romagnoli + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/CSUN_Jiang.yaml b/projects/CSUN_Jiang.yaml new file mode 100644 index 000000000..b32d7f39b --- /dev/null +++ b/projects/CSUN_Jiang.yaml @@ -0,0 +1,9 @@ +Description: > + Wildfire Prediction for California using various remote sensing data from the past decades. + This is a computation intensive research project that involves applying machine learning models for data analysis and prediction, + and also computation-intensive work for data visualization. + This project will involve collaborations from both internal and external students at California State University, Northridge. +Department: Computer Science +FieldOfScience: Computer and Information Sciences +Organization: California State University, Northridge +PIName: Xunfei Jiang diff --git a/projects/CSU_Buchanan.yaml b/projects/CSU_Buchanan.yaml new file mode 100644 index 000000000..2e321d038 --- /dev/null +++ b/projects/CSU_Buchanan.yaml @@ -0,0 +1,5 @@ +Description: Modeling of magnetorheological elastomers +Department: Physics +FieldOfScience: Physics +Organization: Colorado State University +PIName: Kristen Buchanan diff --git a/projects/Caltech_Vallisneri.yaml b/projects/Caltech_Vallisneri.yaml new file mode 100644 index 000000000..3ba2f2a88 --- /dev/null +++ b/projects/Caltech_Vallisneri.yaml @@ -0,0 +1,12 @@ +Description: > + The NANOGrav collaboration is a cross-university, cross-discipline collection of astrophysicists, + data analysts, and engineers who are currently working to detect a gravitational wave background + via Pulsar Timing Arrays (PTAs). Our group's current projects are related to cross-validation and + posterior predictive checking methods for parameter estimation and detection analyses for Bayesian + PTA studies. Another project is related to increasing computational efficiency of PTA analyses by + developing likelihood reweighting methods for PTAs. More information on NANOGrav can be + found here: http://nanograv.org/ +Department: California Institute of Technology +FieldOfScience: Astronomy and Astrophysics +Organization: California Institute of Technology +PIName: Michele Vallisneri diff --git a/projects/CaseWestern_Zhang.yaml b/projects/CaseWestern_Zhang.yaml new file mode 100644 index 000000000..d8186b6c6 --- /dev/null +++ b/projects/CaseWestern_Zhang.yaml @@ -0,0 +1,9 @@ +Description: A project involving neuroimaging and genetics data for neurodegenerative disease. +Department: Dept. of Population & Quantitative Health Sciences (PQHS) +FieldOfScience: Biological and Biomedical Sciences +Organization: Case Western Reserve University +PIName: Lijun Zhang + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/CedarsSinai_Meyer.yaml b/projects/CedarsSinai_Meyer.yaml new file mode 100644 index 000000000..ef3b3ae14 --- /dev/null +++ b/projects/CedarsSinai_Meyer.yaml @@ -0,0 +1,10 @@ +Description: > + The Platform for Single-Cell Science is a tool for improving both the reproducibility and accessibility of analytical + pipelines developed for single-cell multiomics. Researchers will be able to upload their data, create an analysis pipeline + using our javascript designer, and link their results to a publication. The raw data, analysis, and results will be made + available for interactive exploration or download when users are ready to publish. We are hoping to understand if there + is a way we can use OSG by sending jobs that are prepared on our website hosted on AWS to the OSG for execution. +Department: Computational Biomedicine +FieldOfScience: Biological and Biomedical Sciences +Organization: Cedars-Sinai Medical Center +PIName: Jesse Meyer diff --git a/projects/Cornell_Sandoz.yaml b/projects/Cornell_Sandoz.yaml new file mode 100644 index 000000000..a79e3cb93 --- /dev/null +++ b/projects/Cornell_Sandoz.yaml @@ -0,0 +1,5 @@ +Description: We study bacterial survival. Particularly, we are interested in cell wall modifications in response to changing environments. https://www.ksandozlab.com/new-page-2 +Department: Population Medicine and Diagnostic Sciences +FieldOfScience: Biological and Biomedical Sciences +Organization: Cornell University +PIName: Kelsi Sandoz diff --git a/projects/Dartmouth_Chaboyer.yaml b/projects/Dartmouth_Chaboyer.yaml new file mode 100644 index 000000000..61052c9f9 --- /dev/null +++ b/projects/Dartmouth_Chaboyer.yaml @@ -0,0 +1,9 @@ +Description: > + Computational stellar models are widely used in astrophysics and are often consulted to interpret observations of starlight. + My research group aims to improve stellar models by incorporating updated physics into the models, creating a database of + stellar models for use by other researchers, and to use these improved stellar models to study a variety of issues related + to galactic archelogy and the formation of galaxies. https://stellar.host.dartmouth.edu +Department: Physics and Astronomy +FieldOfScience: Astronomy and Astrophysics +Organization: Dartmouth College +PIName: Brian Chaboyer diff --git a/projects/Duke_Charbonneau.yaml b/projects/Duke_Charbonneau.yaml new file mode 100644 index 000000000..5b0268e57 --- /dev/null +++ b/projects/Duke_Charbonneau.yaml @@ -0,0 +1,8 @@ +Description: > + Periodic microphases universally emerge in systems for which short-range inter-particle attraction is frustrated by long-range repulsion. + The morphological richness of these phases makes them desirable material targets, but our relatively coarse understanding of even simple models limits our grasp of their assembly. + The OSG computing resources will enable us to explore more solutions of the equilibrium phase behavior of a family of similar microscopic microphase formers through specialized Monte Carlo simulations. +Department: Chemistry +FieldOfScience: Computational Condensed Matter Physics +Organization: Duke University +PIName: Patrick Charbonneau diff --git a/projects/ETHZ_Zhang.yaml b/projects/ETHZ_Zhang.yaml new file mode 100644 index 000000000..4dfccce4f --- /dev/null +++ b/projects/ETHZ_Zhang.yaml @@ -0,0 +1,8 @@ +Department: Computer Science +Description: To make machine learning techniques widely accessible. +FieldOfScience: Computer Science +Organization: ETH Zurich +PIName: Ce Zhang +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/EWMS_Riedel_Startup.yaml b/projects/EWMS_Riedel_Startup.yaml new file mode 100644 index 000000000..54ba7585c --- /dev/null +++ b/projects/EWMS_Riedel_Startup.yaml @@ -0,0 +1,8 @@ +Department: Physics +Description: To develop an Observation Management System Framework which will help alleviating multiple types of astrophysical data and respective workflow management. The Event Workflow Management System (EWMS)is a workload manager designed for processing events (simulated readouts from a particle physics detector, recorded data points, images, etc.) with complex workflows. +FieldOfScience: Astrophysics +Organization: University of Wisconsin-Madison +PIName: Benedikt Riedel +Sponsor: + CampusGrid: + Name: PATh Facility diff --git a/projects/Etown_Wittmeyer.yaml b/projects/Etown_Wittmeyer.yaml new file mode 100644 index 000000000..8f19a77fa --- /dev/null +++ b/projects/Etown_Wittmeyer.yaml @@ -0,0 +1,11 @@ +Description: I am interested in examining experience-dependent neuroplasticity and individual differences in humans as it pertains to learning and memory. In particular, I analyze structural magnetic resonance imaging (sMRI) data from various neuroimaging data-sharing platforms to explore changes in gray matter across learning and/or correlate learning performance with various cognitive and demographic factors. +Department: Psychology +FieldOfScience: Psychology and Life Sciences +Organization: Elizabethtown College +PIName: Jennifer Legault Wittmeyer + +ID: '591' + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/Eureka_Danehkar.yaml b/projects/Eureka_Danehkar.yaml new file mode 100644 index 000000000..6e178144b --- /dev/null +++ b/projects/Eureka_Danehkar.yaml @@ -0,0 +1,9 @@ +Description: Modeling Reflection around Black Holes +Department: Eureka Scientific +FieldOfScience: Astronomy and Astrophysics +Organization: Eureka Scientific, Inc. +PIName: Ashkbiz Danehkar + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/FIU_Hamid.yaml b/projects/FIU_Hamid.yaml new file mode 100644 index 000000000..42bba76e1 --- /dev/null +++ b/projects/FIU_Hamid.yaml @@ -0,0 +1,9 @@ +Description: https://fphlm.cs.fiu.edu/ +Department: IHRC +FieldOfScience: Ocean Sciences and Marine Sciences +Organization: Florida International University +PIName: Shahid Hamid + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/FSU_RCC.yaml b/projects/FSU_RCC.yaml new file mode 100644 index 000000000..73ace04c1 --- /dev/null +++ b/projects/FSU_RCC.yaml @@ -0,0 +1,11 @@ +Description: The Research Computing Center at Florida State University + enables research and education by maintaining a diverse campus + cyberinfrastructure +Department: Research Computing Center +FieldOfScience: Research Computing +Organization: Florida State University +PIName: Paul van der Mark + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/GATech_Coogan.yaml b/projects/GATech_Coogan.yaml new file mode 100644 index 000000000..5ccf90490 --- /dev/null +++ b/projects/GATech_Coogan.yaml @@ -0,0 +1,12 @@ +Description: We are attempting to run a simulation for Georgia Tech's + Robotarium on our website when users upload run files. Our simulator is + based on https://github.com/robotarium/robotarium_python_simulator , + with edits to certain functions. +Department: Electrical and Computer Engineering +FieldOfScience: Electrical, Electronic, and Communications +Organization: Georgia Institute of Technology +PIName: Samuel Coogan + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/GSU_ARCTIC.yaml b/projects/GSU_ARCTIC.yaml new file mode 100644 index 000000000..b3a0ca405 --- /dev/null +++ b/projects/GSU_ARCTIC.yaml @@ -0,0 +1,5 @@ +Department: Advanced Research Computing Technology and Innovation Core +Description: https://arctic.gsu.edu/ +FieldOfScience: Research Computing +Organization: Georgia State University +PIName: Suranga Edirisinghe diff --git a/projects/Gateway_DistribMedicalAI.yaml b/projects/Gateway_DistribMedicalAI.yaml new file mode 100644 index 000000000..9d4623ebe --- /dev/null +++ b/projects/Gateway_DistribMedicalAI.yaml @@ -0,0 +1,9 @@ +Description: Developing a job submission template for common medical AI imaging applications. +Department: Mathematics +FieldOfScience: Medical Imaging +Organization: Rowan University +PIName: Hieu Nguyen + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/HCC_staff.yaml b/projects/HCC_staff.yaml new file mode 100644 index 000000000..02197bdd0 --- /dev/null +++ b/projects/HCC_staff.yaml @@ -0,0 +1,5 @@ +Description: Cyberinfrastructure Research +Department: Holland Computing Center +FieldOfScience: Computer Science +Organization: University of Nebraska-Lincoln +PIName: Adam Caprez diff --git a/projects/Harvard_Fox.yaml b/projects/Harvard_Fox.yaml new file mode 100644 index 000000000..b77b895be --- /dev/null +++ b/projects/Harvard_Fox.yaml @@ -0,0 +1,10 @@ +Description: Computational analysis of functional neuroimaging data to + identify brain circuits and potential therapeutic stimulation targets. +Department: Center for Brain Circuit Therapeutics / Neurology +FieldOfScience: Biological and Biomedical Sciences +Organization: Harvard University +PIName: Michael Fox + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/IIT_Li.yaml b/projects/IIT_Li.yaml new file mode 100644 index 000000000..6f95bb31f --- /dev/null +++ b/projects/IIT_Li.yaml @@ -0,0 +1,7 @@ +Description: > + Develop Lagrangian particle methods for moving interface problems in fluid mechanics and materials science; + Develop Physical Informed Neural network (PINN) for Green function-based methods. +Department: Applied Mathematics +FieldOfScience: Materials Science +Organization: Illinois Institute of Technology +PIName: Shuwang Li diff --git a/projects/IIT_Wereszczynski.yaml b/projects/IIT_Wereszczynski.yaml new file mode 100644 index 000000000..c6c7b9a28 --- /dev/null +++ b/projects/IIT_Wereszczynski.yaml @@ -0,0 +1,9 @@ +Description: https://wereszczynskilab.org/research/ +Department: Physics +FieldOfScience: Biological and Biomedical Sciences +Organization: Illinois Institute of Technology +PIName: Jeff Wereszczynski + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/IceCube_2022_Halzen.yaml b/projects/IceCube_2022_Halzen.yaml new file mode 100644 index 000000000..36e522beb --- /dev/null +++ b/projects/IceCube_2022_Halzen.yaml @@ -0,0 +1,18 @@ +Department: Physics +Description: 'IceCube is the world''s largest neutrino detector. It is located at + the South Pole and includes a cubic kilometer + of instrumented ice. IceCube searches for neutrinos from the most violent astrophysical + sources: events like exploding stars, gamma + ray bursts, and cataclysmic phenomena involving black holes and neutron stars. The + IceCube telescope is a powerful tool to search for + dark matter, and could reveal the new physical processes associated with the enigmatic + origin of the highest energy particles in + nature. In addition, exploring the background of neutrinos produced in the atmosphere, + IceCube studies the neutrinos themselves; their + energies far exceed those produced by accelerator beams.' +FieldOfScience: Astrophysics +Organization: University of Wisconsin-Madison +PIName: Francis Halzen +Sponsor: + CampusGrid: + Name: PATh Facility diff --git a/projects/Illinois_2022_Tsokaros.yaml b/projects/Illinois_2022_Tsokaros.yaml new file mode 100644 index 000000000..a4c114fec --- /dev/null +++ b/projects/Illinois_2022_Tsokaros.yaml @@ -0,0 +1,9 @@ +Description: Research includes general and numerical relativity, astrophysics, cosmology, and alternative theories of gravity. +Department: Physics +FieldOfScience: Astrophysics +Organization: University of Illinois Urbana-Champaign +PIName: Antonios Tsokaros + +Sponsor: + CampusGrid: + Name: PATh Facility diff --git a/projects/Illinois_Petravick.yaml b/projects/Illinois_Petravick.yaml new file mode 100644 index 000000000..b18a8d3b5 --- /dev/null +++ b/projects/Illinois_Petravick.yaml @@ -0,0 +1,9 @@ +Description: The CMB-S4 project is prototyping processing and data flow on the FABRIC testbed https://portal.fabric-testbed.net/. We are studying the use of HTCondor on FABRIC VM nodes in scenarios where data would arrive over high speed networks. +Department: National Center for Supercomputing Applications (NCSA) +FieldOfScience: Astronomy +Organization: University of Illinois Urbana-Champaign +PIName: Donald Petravick + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/Internet2_MS-CC.yaml b/projects/Internet2_MS-CC.yaml new file mode 100644 index 000000000..ec2e94435 --- /dev/null +++ b/projects/Internet2_MS-CC.yaml @@ -0,0 +1,9 @@ +Description: The Minority Serving - Cyberinfrastructure Consortium envisions a transformational partnership to promote advanced cyberinfrastructure capabilities on HBCU, HSI, TCU, and MSI campuses, with data; research computing; teaching; curriculum development and implementation; collaboration; and capacity-building connections among institutions. +Department: MS-CC +FieldOfScience: Computer and Information Sciences +Organization: Internet2 +PIName: Ana Hunsinger + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/LSU_Cox.yaml b/projects/LSU_Cox.yaml new file mode 100644 index 000000000..07b18922c --- /dev/null +++ b/projects/LSU_Cox.yaml @@ -0,0 +1,7 @@ +Description: > + Using machine learning techniques that discover solutions with anatomically and temporally structured sparsity, + we aim to test representational predictions from cognitive psychology using whole-brain neuroimaging datasets. +Department: Department of Psychology +FieldOfScience: Behavioral Science +Organization: Louisiana State University +PIName: Christopher Cox diff --git a/projects/MSKCC_Chodera.yaml b/projects/MSKCC_Chodera.yaml new file mode 100644 index 000000000..8614771f0 --- /dev/null +++ b/projects/MSKCC_Chodera.yaml @@ -0,0 +1,5 @@ +Department: MSKCC +Description: We are developing a system to enable high throughput free energy calculations. +FieldOfScience: Bioinformatics +Organization: Memorial Sloan Kettering Cancer Center +PIName: John Chodera diff --git a/projects/MSSM_Ali.yaml b/projects/MSSM_Ali.yaml new file mode 100644 index 000000000..a403af31e --- /dev/null +++ b/projects/MSSM_Ali.yaml @@ -0,0 +1,11 @@ +Description: Hands on Training on Robust Molecular Simulations Introduces + students to the exciting areas in Computational Biophysics, drug design, + bioinformatics and potentially other computing intensive fields +Department: Neurology +FieldOfScience: Biological and Biomedical Sciences +Organization: Icahn School of Medicine at Mount Sinai +PIName: Rejwan Ali + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/Michigan_Alben.yaml b/projects/Michigan_Alben.yaml new file mode 100644 index 000000000..dec5de1e6 --- /dev/null +++ b/projects/Michigan_Alben.yaml @@ -0,0 +1,9 @@ +Description: The planned research will discover improved flows for thermal transport enhancement. We will extend an existing steady 2D method to efficiently compute optimal unsteady 2D flows in benchmark geometries such as channel flows, and closed and open domains between hot and cold surfaces. We will also develop computational methods for optimal flows in 3D domains that are analogous to the 2D domains we have studied, and determine the gains from 3D flows relative to 2D flows in comparable domains. +Department: Mathematics +FieldOfScience: Applied Mathematics +Organization: University of Michigan +PIName: Silas Alben + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/MontgomeryCollege_Dillman.yaml b/projects/MontgomeryCollege_Dillman.yaml new file mode 100644 index 000000000..a0b37bf36 --- /dev/null +++ b/projects/MontgomeryCollege_Dillman.yaml @@ -0,0 +1,12 @@ +Description: >- + workforce training, 2-5 day workshops every couple of months to get + bench biologists comfortable with various bioinformatics pipelines + on the command line. +Department: Workforce Development & Continuing Education +FieldOfScience: Biological and Biomedical Sciences +Organization: Montgomery College +PIName: Allissa Dillman + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/NCSU_2023_Hall b/projects/NCSU_2023_Hall new file mode 100644 index 000000000..1026ca87d --- /dev/null +++ b/projects/NCSU_2023_Hall @@ -0,0 +1,9 @@ +Description: Studies of square shaped colloidal particles with internal magnetic dipoles. Objective is to discover the phase behavior of colloids under the presence and absence of a magnetic field. Other research on colloids and soft materials under direction of PI can be found at: https://carolkhall.wordpress.ncsu.edu/research/selected-projects/ +Department: Chemical and Biomolecular Engineering +FieldOfScience: Chemical Engineering +Organization: North Carolina State University +PIName: Carol Hall + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/NIAID_TBPortals.yaml b/projects/NIAID_TBPortals.yaml new file mode 100644 index 000000000..4a263e76f --- /dev/null +++ b/projects/NIAID_TBPortals.yaml @@ -0,0 +1,10 @@ +Department: Office of Cyber Infrastructure and Computational Biology +Description: Training AI models and CT image processing and analysis using these AI + models. The collaboration is part of our TB Portals program https://tbportals.niaid.nih.gov/ +FieldOfScience: Biological and Biomedical Sciences +Organization: National Institute of Allergy and Infectious Diseases +PIName: Darrell Hurt + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/NOAA_Fisch.yaml b/projects/NOAA_Fisch.yaml new file mode 100644 index 000000000..72de26f0e --- /dev/null +++ b/projects/NOAA_Fisch.yaml @@ -0,0 +1,8 @@ +Description: > + My research aims to improve population models of fisheries resources so as to better facilitate seafood sustainability + and our understanding of marine and freshwater populations. This involves the development of highly-parameterized + non linear models requiring numerical solutions and numerical integration. +Department: National Marine Fisheries Service +FieldOfScience: Natural Resources and Conservation +Organization: National Oceanic and Atmospheric Administration +PIName: Nicholas Fisch diff --git a/projects/NOIRLab_Zhang.yaml b/projects/NOIRLab_Zhang.yaml new file mode 100644 index 000000000..2df1144c8 --- /dev/null +++ b/projects/NOIRLab_Zhang.yaml @@ -0,0 +1,9 @@ +Description: "Processing astronomical images from the Dark Energy Camera on the Blanco telescope for various research analyses. Perform scientific analyses on clusters of galaxies, features of massive galaxies, and measurements of weak gravitational lensing. Webpage: https://sites.google.com/view/astro-ynzhang/research" +Department: Community Science and Data Center +FieldOfScience: Astronomy and Astrophysics +Organization: NOIR Lab +PIName: Yuanyuan Zhang + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/NSHE_SCS.yaml b/projects/NSHE_SCS.yaml new file mode 100644 index 000000000..6a21e3c85 --- /dev/null +++ b/projects/NSHE_SCS.yaml @@ -0,0 +1,9 @@ +Description: Group for University of Nevada staff members to explore the OSPool +Department: System Computing Services Group +FieldOfScience: Research Computing +Organization: Nevada System of Higher Education +PIName: Zachary Newell + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/OHSU_Katamreddy.yaml b/projects/OHSU_Katamreddy.yaml new file mode 100644 index 000000000..263ba5e80 --- /dev/null +++ b/projects/OHSU_Katamreddy.yaml @@ -0,0 +1,14 @@ +Description: > + Cardiovascular disease occurs due to environmental factors like diet, + exercise but also due to genetic predisposition. + I want to work on finding genetic pathways that underlie the genesis cardiovascular disease. + Please find link to my previous work on cardiovascular disease and medicine. ‪ + Adarsh Katamreddy‬ - ‪Google Scholar‬ +Department: Cardiovascular Medicine +FieldOfScience: Medical Sciences +Organization: Oregon Health & Science University +PIName: Adarsh Katamreddy + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/OSG_SoftwareInventory.yaml b/projects/OSG_SoftwareInventory.yaml new file mode 100644 index 000000000..d52a23d7b --- /dev/null +++ b/projects/OSG_SoftwareInventory.yaml @@ -0,0 +1,8 @@ +Department: Computing Sector (OSG Security Team) +Description: OSG Security Team collaboration group currently working on building a worker node scanning tool. They are using OSG Connect for testing this tool. This group of researchers will likely evolve over time, as will their projects and collaborations. As of June 2022, Josh Drake and Brian Chase are points of contact. +FieldOfScience: Computer and Information Science and Engineering +Organization: OSG +PIName: Josh Drake +Sponsor: + VirtualOrganization: + Name: OSG diff --git a/projects/PSI_Kaib.yaml b/projects/PSI_Kaib.yaml new file mode 100644 index 000000000..1883156d9 --- /dev/null +++ b/projects/PSI_Kaib.yaml @@ -0,0 +1,8 @@ +Description: > + I will be using computer simulations to model the orbital evolution of comets and asteroids over the + lifetime of the solar system. In addition, I will be studying the stability of the solar system and Kuiper belt as + it is subjected to close flybys of other stars in the Milky Way. https://www.psi.edu/about/staffpage/nkaib +Department: Planetary Science Institute +FieldOfScience: Astronomy and Astrophysics +Organization: Planetary Science Institute +PIName: Nathan Kaib diff --git a/projects/PSU_Anandakrishnan.yaml b/projects/PSU_Anandakrishnan.yaml new file mode 100644 index 000000000..47032fa14 --- /dev/null +++ b/projects/PSU_Anandakrishnan.yaml @@ -0,0 +1,12 @@ +Description: >- + Penn State Ice and Climate Exploration is an interdisciplinary group + of researchers from across the university dedicated to a better + understanding of the cryosphere. +Department: Geosciences +FieldOfScience: Geological and Earth Sciences +Organization: Pennsylvania State University +PIName: Sridhar Anandakrishnan + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/PSU_Rechtsman.yaml b/projects/PSU_Rechtsman.yaml new file mode 100644 index 000000000..fb6f73a7f --- /dev/null +++ b/projects/PSU_Rechtsman.yaml @@ -0,0 +1,9 @@ +Department: Physics +Description: Laboratory for emergent phenomena and technology in the optical sciences +FieldOfScience: Physics +Organization: Pennsylvania State University +PIName: Mikael Rechtman + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/PSU_Yamamoto.yaml b/projects/PSU_Yamamoto.yaml new file mode 100644 index 000000000..a6d83b0c9 --- /dev/null +++ b/projects/PSU_Yamamoto.yaml @@ -0,0 +1,15 @@ +Description: A machine learning-based 3D reconstruction of highly porous + cement samples cured in a microgravity environment is being pursued. + The approach follows a deep learning-based framework based on the solid + texture synthesis method, widely adopted in the computer graphics + community. Preliminary results https://doi.org/10.2514/6.2023-2025 + showed promising results, and with increased computational resources, + larger exemplars higher resolution will be used for 3D reconstruction. +Department: Aerospace Engineering +FieldOfScience: Aerospace, Aeronautical, and Astronautical Engineering +Organization: Pennsylvania State University +PIName: Namiko Yamamoto + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/Pitt_Aizenstein.yaml b/projects/Pitt_Aizenstein.yaml new file mode 100644 index 000000000..4a60cf85a --- /dev/null +++ b/projects/Pitt_Aizenstein.yaml @@ -0,0 +1,9 @@ +Description: We are applying novel machine learning methods to predict late life depression treatment response using neuroimaging data. We would utilize the computing resources to preprocess large amounts of neuroimaging data. +Department: Department of Bioengineering +FieldOfScience: Biological and Biomedical Sciences +Organization: University of Pittsburgh +PIName: Howard Aizenstein + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/RIT_Tu.yaml b/projects/RIT_Tu.yaml new file mode 100644 index 000000000..ba5338f52 --- /dev/null +++ b/projects/RIT_Tu.yaml @@ -0,0 +1,5 @@ +Description: Study on Solid State Battery Cathode Optimization +Department: Mechanical Engineering +FieldOfScience: Mechanical Engineering +Organization: Rochester Institute of Technology +PIName: Howard Tu diff --git a/projects/Rochester_Franchini.yaml b/projects/Rochester_Franchini.yaml new file mode 100644 index 000000000..f8af697d1 --- /dev/null +++ b/projects/Rochester_Franchini.yaml @@ -0,0 +1,8 @@ +Description: > + The primary objective of this research project is to evaluate the efficacy and feasibility of an AI-powered + pre-diagnostic tool for gastrointestinal diseases. Specifically, the project aims to assess the accuracy of + the AI-powered technology in analyzing abdominal sounds and visual data recorded by the user's mobile phone. +Department: University of Rochester Medical Centre +FieldOfScience: Biological and Biomedical Sciences +Organization: University of Rochester +PIName: Anthony Franchini diff --git a/projects/RutgersOARC.yaml b/projects/RutgersOARC.yaml new file mode 100644 index 000000000..0af15a433 --- /dev/null +++ b/projects/RutgersOARC.yaml @@ -0,0 +1,9 @@ +Description: Rutgers Office of Advanced Research Computing +Department: OARC +FieldOfScience: Computer Science +Organization: Rutgers, The State University of New Jersey +PIName: Bala Desinghu + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/SBU_Jia.yaml b/projects/SBU_Jia.yaml new file mode 100644 index 000000000..704575d2d --- /dev/null +++ b/projects/SBU_Jia.yaml @@ -0,0 +1,8 @@ +Description: https://www.stonybrook.edu/commcms/chemistry/faculty/_faculty-profiles/jia-jiangyong + Simulation of relativistic heavy ion collisions of atomic nuclei, such + as Gold, Lead, Xeon, Oxygen, proton etc using relativistic hydrodynamic + code and transport simulation codes. +Department: Physics +FieldOfScience: Physics +Organization: State University of New York at Stony Brook +PIName: Jiangyong Jia diff --git a/projects/SDSC-Staff.yaml b/projects/SDSC-Staff.yaml new file mode 100644 index 000000000..42feefa0c --- /dev/null +++ b/projects/SDSC-Staff.yaml @@ -0,0 +1,9 @@ +Description: San Diego Supercomputing Center staff, for system exploration and integration +Department: San Diego Supercomputing Center +FieldOfScience: Computer Sciences +Organization: University of California, San Diego +PIName: Frank Wuerthwein + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/SDState_RCi.yaml b/projects/SDState_RCi.yaml new file mode 100644 index 000000000..32357fd53 --- /dev/null +++ b/projects/SDState_RCi.yaml @@ -0,0 +1,10 @@ +Description: This project will be used to train RCi staff in delivering OSG + to researcher at SDSU. +Department: Research Cyberinfrastructure +FieldOfScience: Computer Science +Organization: South Dakota State University +PIName: Chad Julius + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/SIUE_Quinones.yaml b/projects/SIUE_Quinones.yaml new file mode 100644 index 000000000..3a9e25b04 --- /dev/null +++ b/projects/SIUE_Quinones.yaml @@ -0,0 +1,5 @@ +Description: Research in Computer Vision, Digital Image Processing, and Multi-Agent Simulation. +Department: Computer Science +FieldOfScience: Computer Science +Organization: Southern Illinois University Edwardsville +PIName: Rubi Quinones diff --git a/projects/SUNYUpstateMed_Schmitt.yaml b/projects/SUNYUpstateMed_Schmitt.yaml new file mode 100644 index 000000000..3a4d82fef --- /dev/null +++ b/projects/SUNYUpstateMed_Schmitt.yaml @@ -0,0 +1,9 @@ +Description: Studying the structure and phylogenetics of the ribonucleprotein complexes RNase MRP and P to apply to human and baker's yeast; Mining high-throughput and public datasets for information on the baker's yeast ribonucleoprotein complex RNase MRP' https://www.upstate.edu/biochem/research/fac_research.php?empID=schmittm +Department: Department of Biochemistry & Molecular Biology +FieldOfScience: Biological and Biomedical Sciences +Organization: SUNY Upstate Medical University +PIName: Mark Schmitt + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/Spelman_Tekle.yaml b/projects/Spelman_Tekle.yaml new file mode 100644 index 000000000..73c7b2d7d --- /dev/null +++ b/projects/Spelman_Tekle.yaml @@ -0,0 +1,9 @@ +Description: My lab implements the basic principles of evolution to study the diversity, origin and relationships of medical and nonmedical microbes. +Department: Biology +FieldOfScience: Biological and Biomedical Sciences +Organization: Spelman College +PIName: Yonas Tekle + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/TDAI_Staff.yaml b/projects/TDAI_Staff.yaml new file mode 100644 index 000000000..3f9dfb6df --- /dev/null +++ b/projects/TDAI_Staff.yaml @@ -0,0 +1,9 @@ +Description: "This project is for an XSEDE/Access Champions allocation, so there is no project that is planned for OSG presently. TDAI serves over 200 faculty affiliates that have interest in various aspects of Data Science, with researchers spanning disciplines from foundational methods, to applications in a variety of sciences, to data governance and policy. The intention of obtaining an OSG project is similar to other Champions accounts: to have resources readily available for researchers to test-drive against their workflow prior to obtaining their own allocations. https://tdai.osu.edu/research-action" +Department: Translational Data Analytics Institute +FieldOfScience: Data Science +Organization: The Ohio State University +PIName: Tanya Berger-Wolf + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/TG-CHE200122.yaml b/projects/TG-CHE200122.yaml index 52094a768..adaf7f346 100644 --- a/projects/TG-CHE200122.yaml +++ b/projects/TG-CHE200122.yaml @@ -41,6 +41,7 @@ ResourceAllocations: - Type: Other SubmitResources: - CHTC-XD-SUBMIT + - UChicago_OSGConnect_login04 ExecuteResourceGroups: - GroupName: TACC-Frontera LocalAllocationID: "CHE20009" diff --git a/projects/TG-CIE160039.yaml b/projects/TG-CIE160039.yaml new file mode 100644 index 000000000..d57ab10dd --- /dev/null +++ b/projects/TG-CIE160039.yaml @@ -0,0 +1,9 @@ +Description: Campus Champions at Carnegie Mellon University +Department: ECE +FieldOfScience: Engineering Systems +Organization: Carnegie-Mellon University +PIName: Franz Franchetti + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/TG-CIE170004.yaml b/projects/TG-CIE170004.yaml new file mode 100644 index 000000000..ee740fffa --- /dev/null +++ b/projects/TG-CIE170004.yaml @@ -0,0 +1,11 @@ +Description: This allocation enables Globus help desk and tech support + personnel to troubleshoot issues and provide technical support for + the Globus endpoints operated by ACCESS resource providers. +Department: Globus Staff +FieldOfScience: Applied Computer Science +Organization: University of Chicago +PIName: Lee Liming + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/TG-MCB160020.yaml b/projects/TG-MCB160020.yaml new file mode 100644 index 000000000..a403af31e --- /dev/null +++ b/projects/TG-MCB160020.yaml @@ -0,0 +1,11 @@ +Description: Hands on Training on Robust Molecular Simulations Introduces + students to the exciting areas in Computational Biophysics, drug design, + bioinformatics and potentially other computing intensive fields +Department: Neurology +FieldOfScience: Biological and Biomedical Sciences +Organization: Icahn School of Medicine at Mount Sinai +PIName: Rejwan Ali + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/TG-PHY220016.yaml b/projects/TG-PHY220016.yaml new file mode 100644 index 000000000..43bb4ca17 --- /dev/null +++ b/projects/TG-PHY220016.yaml @@ -0,0 +1,8 @@ +Department: Physics +Description: Benchmarking of 2D Isometric Tensor Network Algorithms. Tensor networks states (TNS) are an essential tool in condensed matter physics for simulating quantum systems on standard, classical computers. In one-dimension, Matrix Product State (MPS) methods are provably accurate at representing a large class of physical states, and efficient algorithms have been developed for finding lowest energy, excited , and time-evolved states. In higher dimensions, however, exactly calculating properties of TNS are provably NP-hard, so approximations must be made. A recent development in two-dimensions (2D) is the isometric tensor network (isoTNS), which places restrictions on the network so that calculations become efficient [1]. We have recently developed algorithms for simulations of 2D networks with a finite by infinite geometry (think of an infinitely long ribbon). It is necessary to now benchmark these methods against existing 1D algorithms applied to 2D systems and determine the system sizes at which these methods outperform their 1D counterparts. The simulation code is written in Python and typically is for a single core. [1] Zaletel, Pollmann; Isometric Tensor Network States in Two Dimensions; Phys. Rev. Lett. 124, 037201 (2020) +FieldOfScience: Physics +Organization: University of California, Berkeley +PIName: Sajant Anand +Sponsor: + CampusGrid: + Name: OSG-XSEDE diff --git a/projects/UALR_EAC.yaml b/projects/UALR_EAC.yaml new file mode 100644 index 000000000..3f03d268c --- /dev/null +++ b/projects/UALR_EAC.yaml @@ -0,0 +1,9 @@ +Description: The Donaghey Emerging Analytics Center (EAC, [http://eac.ualr.edu]) is an academic department within UA Little Rock with a focus on research and development in immersive visualization, augmented/virtual/mixed realities, and interactive technologies in general. The EAC is further including in its portfolio research in cybersecurity, mobile/ubiquitous computing, and the internet-of-things, as well as applications of machine and deep learning. Additionally, the EAC is collaborating very closely with the Department of Computer Science at UA Little Rock, where the computer science department is the prime talent pool for the EAC while the EAC offers wide-ranging opportunities for students in professional software development as well as academic and industry research. +Department: Donaghey Emerging Analytics Center +FieldOfScience: Computer and Information Science +Organization: University of Arkansas at Little Rock +PIName: Jan Springer + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UALR_ITS.yaml b/projects/UALR_ITS.yaml new file mode 100644 index 000000000..a5e842902 --- /dev/null +++ b/projects/UALR_ITS.yaml @@ -0,0 +1,9 @@ +Description: Accounts for ITS staff members at the University of Arkansas, Little Rock +Department: IT Services +FieldOfScience: Research Computing +Organization: University of Arkansas at Little Rock +PIName: Timothy Stoddard + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCBerkeley_Zaletel.yaml b/projects/UCBerkeley_Zaletel.yaml new file mode 100644 index 000000000..cab199c15 --- /dev/null +++ b/projects/UCBerkeley_Zaletel.yaml @@ -0,0 +1,14 @@ +Description: >- + Tensor networks provide an efficient approximation to quantum + many-body wavefunctions and a controllable method to simulate + quantum computing on classical hardware. We apply these techniques + to problems in condensed matter physics and quantum error + correction. +Department: Physics +FieldOfScience: Condensed Matter Physics +Organization: University of California, Berkeley +PIName: Mike Zaletel + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCDavis_Yarov-Yarovoy.yaml b/projects/UCDavis_Yarov-Yarovoy.yaml new file mode 100644 index 000000000..e6d40f15a --- /dev/null +++ b/projects/UCDavis_Yarov-Yarovoy.yaml @@ -0,0 +1,9 @@ +Description: https://health.ucdavis.edu/physiology/faculty/yarovoy.html +Department: Physiology and Membrane Biology +FieldOfScience: Computational Biology +Organization: University of California, Davis +PIName: Vladimir Yarov-Yarovoy + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCF_Zou.yaml b/projects/UCF_Zou.yaml new file mode 100644 index 000000000..ac7decbe3 --- /dev/null +++ b/projects/UCF_Zou.yaml @@ -0,0 +1,9 @@ +Description: Using computational tools to investigate properties of materials. +Department: Department of Chemistry +FieldOfScience: Chemistry +Organization: University of Central Florida +PIName: Shengli Zou + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCI_Sheng.yaml b/projects/UCI_Sheng.yaml new file mode 100644 index 000000000..d9ead59ff --- /dev/null +++ b/projects/UCI_Sheng.yaml @@ -0,0 +1,6 @@ +Department: Paul Merage School of Business +Description: 'Research on the US housing market and transactions with the aim of comprehending + how housing prices move and are correlated with each other. ' +FieldOfScience: Economics +Organization: University of California, Irvine +PIName: Jinfei Sheng diff --git a/projects/UCSC_Williams.yaml b/projects/UCSC_Williams.yaml new file mode 100644 index 000000000..64ca13b3f --- /dev/null +++ b/projects/UCSC_Williams.yaml @@ -0,0 +1,9 @@ +Description: "Simulations of performances of the Cherenkov Telescope Array (CTA). It is specially focused on studying and optimizing the performances of the CTA-US Schwarzschild-Couder Telescope (SCT) for its implementation in the Southern array of CTA. Useful links: CTA (https://www.cta-observatory.org/), Current SCT prototype installed at the Fred Whipple Lawrence Observatory https://cta-psct.physics.ucla.edu/index.html" +Department: Physics +FieldOfScience: Astronomy and Astrophysics +Organization: University of California Santa Cruz +PIName: David Williams + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCSD_Du.yaml b/projects/UCSD_Du.yaml new file mode 100644 index 000000000..fdd4256b4 --- /dev/null +++ b/projects/UCSD_Du.yaml @@ -0,0 +1,11 @@ +Department: Physics +Description: Our research group focuses on developing quantum sensing and imaging + techniques to study various properties (spin, charge, and heat, etc) of quantum + materials in the nanometer scale. In addition, we design and engineer hybrid quantum + devices to achieve efficient qubit control for quantum information applications. + Our research tools are versatile, including optical measurement based on nitrogen + vacancy center in diamond, transport and microwave spectroscopy as well as scanning + probe magnetometry. +FieldOfScience: Physics +Organization: University of California, San Diego +PIName: Chunhui Du diff --git a/projects/UCSD_Gilson.yaml b/projects/UCSD_Gilson.yaml new file mode 100644 index 000000000..f0a9f766a --- /dev/null +++ b/projects/UCSD_Gilson.yaml @@ -0,0 +1,9 @@ +Description: We use theoretical, computational, informatic, and experimental approaches to evaluate and advance the methods of computer-aided drug design. We also work on drug discovery projects and study molecular motors and other nonequilibrium systems. +Department: Skaggs School of Pharmacy & Pharmaceutical Sciences +FieldOfScience: Chemistry +Organization: University of California, San Diego +PIName: Michael Gilson + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCSD_Goetz.yaml b/projects/UCSD_Goetz.yaml new file mode 100644 index 000000000..9b8a18e12 --- /dev/null +++ b/projects/UCSD_Goetz.yaml @@ -0,0 +1,17 @@ +Description: Emerging machine learning (ML) models enable the design + of atomistic interaction potentials for molecular simulations that + are both accurate and computationally efficient. Training of these ML + models requires a large number of reference data in form of energies and + nuclear forces of relevant molecular conformations and intermolecular + interactions. This project will compute accurate quantum mechanical + reference energies and forces using density functional theory and + coupled cluster theory of relevance for chemical and biomolecular + simulations. +Department: San Diego Supercomputing Center +FieldOfScience: Chemistry +Organization: University of California, San Diego +PIName: Andreas Goetz + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCSD_Guiang.yaml b/projects/UCSD_Guiang.yaml new file mode 100644 index 000000000..e4677b9fa --- /dev/null +++ b/projects/UCSD_Guiang.yaml @@ -0,0 +1,9 @@ +Description: Improve performance of data downsampling tools for future LHC runs +Department: Physics +FieldOfScience: Physics +Organization: University of California, San Diego +PIName: Jonathan Guiang + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UCSD_Shah.yaml b/projects/UCSD_Shah.yaml new file mode 100644 index 000000000..b51f4cc4e --- /dev/null +++ b/projects/UCSD_Shah.yaml @@ -0,0 +1,9 @@ +Description: The Shah lab develops biomaterials to direct immune activity and function. +Department: Nanoengineering Department +FieldOfScience: Engineering +Organization: University of California, San Diego +PIName: Nisarg Shah + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UConn_Alpay.yaml b/projects/UConn_Alpay.yaml new file mode 100644 index 000000000..58c201b20 --- /dev/null +++ b/projects/UConn_Alpay.yaml @@ -0,0 +1,9 @@ +Description: > + Our team of scientists uses computational and theoretical methodologies to understand and address + fundamental problems in materials science and engineering. Collectively, we have a broad spectrum of research interests + with myriad applications. We use our understanding to design advanced materials that impact the way we live, + including functional materials, smart materials, aerospace, nanostructured materials and materials for energy efficiency. https://alpay.ims.uconn.edu/ +Department: Materials Science and Engineering +FieldOfScience: Materials Science +Organization: University of Connecticut +PIName: Pamir Alpay diff --git a/projects/UF_Strother.yaml b/projects/UF_Strother.yaml new file mode 100644 index 000000000..da4e54e36 --- /dev/null +++ b/projects/UF_Strother.yaml @@ -0,0 +1,10 @@ +Description: > + The Strother Lab focuses on questions at the interface between physiology and physics. + Our lab is especially interested in understanding processes at multiple levels of organization, + from the properties of individual cells up to the responses of the whole animal. + Current projects in the lab examine a range of topics, including the effects of stress on animal behavior, + nervous control of the cardiovascular system, and sensory physiology. See also www.strotherlab.org. +Department: Whitney Laboratory for Marine Bioscience +FieldOfScience: Neuroscience, biomechanics, microscopy +Organization: University of Florida +PIName: James Strother diff --git a/projects/UIowa_Villarini.yaml b/projects/UIowa_Villarini.yaml new file mode 100644 index 000000000..b8ee711c9 --- /dev/null +++ b/projects/UIowa_Villarini.yaml @@ -0,0 +1,9 @@ +Description: The research will focus broadly on flood hydrology, extreme events, hydroloclimatology, and climate predictions. It will be done by the processing of spatial and temporal datasets and running simple statistical models. +Department: Civil and Environmental Engineering +FieldOfScience: Civil Engineering +Organization: University of Iowa +PIName: Gabriele Villarini + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UMassLowell_Delhommelle.yaml b/projects/UMassLowell_Delhommelle.yaml new file mode 100644 index 000000000..65caf402c --- /dev/null +++ b/projects/UMassLowell_Delhommelle.yaml @@ -0,0 +1,10 @@ +Description: Unraveling Crystallization and Phase Transition Processes + through Topology, Rare-Event Simulations, and Machine Learning +Department: Chemistry +FieldOfScience: Physical Chemistry +Organization: University of Massachusetts Lowell +PIName: Jerome Delhommelle + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UMiss_Gupta.yaml b/projects/UMiss_Gupta.yaml new file mode 100644 index 000000000..c7986c9ca --- /dev/null +++ b/projects/UMiss_Gupta.yaml @@ -0,0 +1,6 @@ +Department: LIGO +Description: 'We are studying the evolution of binary black holes and it would be + great to try out the OS Pool facility through the AP40 cluster. ' +FieldOfScience: Astronomy and Astrophysics +Organization: University of Mississippi +PIName: Anuradha Gupta diff --git a/projects/UMontana_Roy.yaml b/projects/UMontana_Roy.yaml new file mode 100644 index 000000000..8b3e4211c --- /dev/null +++ b/projects/UMontana_Roy.yaml @@ -0,0 +1,15 @@ +Description: > + 1) Virtual screening - Computational or virtual screening of molecules can accelerate drug development programs. + We have developed a virtual screening method to screen billions of molecules for hit generation against specific protein targets. + We want to develop the method further and also want to use the method to develop hits against specific proteins, + such as the one announced in this competition. https://cache-challenge.org/ 2) Entropy from surface properties - + Calculating entropy is tricky, as, in principle, it requires sampling vast phase space to count all available microstates. + We are developing a method for calculating the entropy of small molecules from their surface properties. + Such a method will benefit computational chemistry, especially the virtual screening community. https://www.biorxiv.org/content/10.1101/2021.05.26.445640v1.abstract + 3) Transferability of polygenic risk scores (PRS) - PRS is a useful tool to estimate one's health condition propensity from their genetic makeup. + Historically, most of the PRS models were built from European ancestry samples. We are working on a network model to identify the best way + to transfer a PRS model from the population it was developed for to another population not included in the study. +Department: Department of Biomedical and Pharmaceutical Sciences +FieldOfScience: Biological and Biomedical Sciences +Organization: University of Montana +PIName: Amitava Roy diff --git a/projects/UNI_Staff.yaml b/projects/UNI_Staff.yaml new file mode 100644 index 000000000..6a7836363 --- /dev/null +++ b/projects/UNI_Staff.yaml @@ -0,0 +1,5 @@ +Description: Will be using OSPool to evaluate and develop training for UNI users. +Department: Information Technology, Network & Infrastructure Services +FieldOfScience: Training +Organization: University of Northern Iowa +PIName: Wesley Jones diff --git a/projects/UOregon_Shende.yaml b/projects/UOregon_Shende.yaml new file mode 100644 index 000000000..bb9b6fb22 --- /dev/null +++ b/projects/UOregon_Shende.yaml @@ -0,0 +1,18 @@ +Description: The project will evaluate the feasibility of using + Singularity containers from the Extreme-scale Scientific Software Stack + (E4S)[https://e4s.io] in the Open Science Grid to support HPC and + AI/ML workflows. E4S includes support for 100+ HPC products (e.g., TAU, + Trilinos, PETSc, OpenMPI, MPICH, Kokkos, HDF5) and AI/ML products (e.g., + TensorFlow, PyTorch) optimized for GPUs from three vendors (Intel, + AMD, and NVIDIA). It supports LLVM compilers, vendor compilers (NVHPC, + oneAPI, ROCm hipcc), on multiple architectures (including x86_64, + ppc64le, and aarch64). +Department: Performance Research Laboratory, Oregon Advanced Computing + Institute for Science and Society (OACISS) +FieldOfScience: Computer and Information Services +Organization: University of Oregon +PIName: Sameer Shende + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/USC_CARC.yaml b/projects/USC_CARC.yaml new file mode 100644 index 000000000..23982b885 --- /dev/null +++ b/projects/USC_CARC.yaml @@ -0,0 +1,9 @@ +Description: USC Center for Advanced Research Computing Facilitators +Department: Center for Advanced Research Computing +FieldOfScience: Computer Science +Organization: University of Southern California +PIName: BD Kim + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/USC_Rahbari.yaml b/projects/USC_Rahbari.yaml new file mode 100644 index 000000000..c7382225b --- /dev/null +++ b/projects/USC_Rahbari.yaml @@ -0,0 +1,9 @@ +Description: The present project aims at developing a multi-fidelity platform for uncertainty quantification of the air flow simulations over a common aerodynamic object. Thousands of low-fidelity, yet fast, simulations are required to construct the basis of this platform. +Department: Center for Advanced Research Computing +FieldOfScience: Mechanical Engineering +Organization: University of Southern California +PIName: Iman Rahbari + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/USDA_Andorf.yaml b/projects/USDA_Andorf.yaml new file mode 100644 index 000000000..27576959c --- /dev/null +++ b/projects/USDA_Andorf.yaml @@ -0,0 +1,8 @@ +Description: > + The research is part of the Maize Genetics and Genomics Database (MaizeGD) to utilize protein structure models to improve maize functional genomics. + The project will generate new protein structure models to improve functional classification, canonical isoform detection, + gene structure annotation, and assigning confidence scores to point mutations based on the likelihood to change function. +Department: Midwest Area, Corn Insects, and Crop Genetics Research Unit +FieldOfScience: Biological and Biomedical Sciences +Organization: United States Department of Agriculture +PIName: Carson Andorf diff --git a/projects/USD_PHYS733.yaml b/projects/USD_PHYS733.yaml new file mode 100644 index 000000000..7f1d94e2e --- /dev/null +++ b/projects/USD_PHYS733.yaml @@ -0,0 +1,9 @@ +Description: A course on Elementary Particle and Nuclear Physics at the University of South Dakota +Department: Physics +FieldOfScience: Elementary Particles +Organization: University of South Dakota +PIName: Jing Liu + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UTEP_Moore.yaml b/projects/UTEP_Moore.yaml new file mode 100644 index 000000000..7de2f2430 --- /dev/null +++ b/projects/UTEP_Moore.yaml @@ -0,0 +1,5 @@ +Description: We are developing portable containers for deep-learning frameworks and applications +Department: Computer Science +FieldOfScience: Computer and Information Services +Organization: University of Texas at El Paso +PIName: Shirley Moore diff --git a/projects/UTK_Luettgau.yaml b/projects/UTK_Luettgau.yaml new file mode 100644 index 000000000..63be4731f --- /dev/null +++ b/projects/UTK_Luettgau.yaml @@ -0,0 +1,11 @@ +Description: >- + Piloting the National Science Data Fabric, A Platform Agnostic + Testbed for Democratizing Data Delivery +Department: Electrical Engineering & Computer Science +FieldOfScience: Computer and Information Science and Engineering +Organization: University of Tennessee, Knoxville +PIName: Jakob Luettgau + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UWMadison_Curtin.yaml b/projects/UWMadison_Curtin.yaml new file mode 100644 index 000000000..377c71519 --- /dev/null +++ b/projects/UWMadison_Curtin.yaml @@ -0,0 +1,5 @@ +Department: Psychology +Description: 'https://arc.psych.wisc.edu/' +FieldOfScience: Social, Behavioral & Economic Sciences +Organization: University of Wisconsin-Madison +PIName: John Curtin diff --git a/projects/UWMadison_Ericksen.yaml b/projects/UWMadison_Ericksen.yaml new file mode 100644 index 000000000..a7d2bbbdc --- /dev/null +++ b/projects/UWMadison_Ericksen.yaml @@ -0,0 +1,5 @@ +Department: Small Molecule Screening Facility +Description: Molecule docking as part of drug discovery research (http://hts.wisc.edu/) +FieldOfScience: Health +Organization: University of Wisconsin-Madison +PIName: Spencer Ericksen diff --git a/projects/UWMadison_Gitter.yaml b/projects/UWMadison_Gitter.yaml new file mode 100644 index 000000000..4bee3276e --- /dev/null +++ b/projects/UWMadison_Gitter.yaml @@ -0,0 +1,5 @@ +Department: Biostatistics and Medical Informatics +Description: 'https://www.biostat.wisc.edu/~gitter/' +FieldOfScience: Medical (NIH) +Organization: University of Wisconsin-Madison +PIName: Anthony Gitter diff --git a/projects/UWMadison_Kwan.yaml b/projects/UWMadison_Kwan.yaml new file mode 100644 index 000000000..585384311 --- /dev/null +++ b/projects/UWMadison_Kwan.yaml @@ -0,0 +1,5 @@ +Department: Pharmacy +Description: 'Bioactive molecules from cultured and uncultured bacteria (https://kwanlab.github.io/)' +FieldOfScience: Health +Organization: University of Wisconsin-Madison +PIName: Jason Kwan diff --git a/projects/UWMadison_Li.yaml b/projects/UWMadison_Li.yaml new file mode 100644 index 000000000..beec8f9fa --- /dev/null +++ b/projects/UWMadison_Li.yaml @@ -0,0 +1,5 @@ +Description: Multiscale modeling, computational materials design, mechanics and physics of polymers, and machine learning-accelerated polymer design. +Department: Mechanical Engineering +FieldOfScience: Engineering +Organization: University of Wisconsin-Madison +PIName: Ying Li diff --git a/projects/UWMadison_Livny.yaml b/projects/UWMadison_Livny.yaml new file mode 100644 index 000000000..1d4b1f0de --- /dev/null +++ b/projects/UWMadison_Livny.yaml @@ -0,0 +1,5 @@ +Department: Computer Sciences +Description: http://chtc.cs.wisc.edu/ +FieldOfScience: Computer & Information Science & Engineering +Organization: University of Wisconsin-Madison +PIName: Miron Livny diff --git a/projects/UWMadison_Negrut.yaml b/projects/UWMadison_Negrut.yaml new file mode 100644 index 000000000..b01066f04 --- /dev/null +++ b/projects/UWMadison_Negrut.yaml @@ -0,0 +1,9 @@ +Description: Chrono is a physics-based modelling and simulation infrastructure based on a platform-independent open-source design implemented in C++. Chrono is developed by the Negrut group; the goal is to make it available on the OSPool. +Department: Mechanical Engineering +FieldOfScience: Engineering +Organization: University of Wisconsin-Madison +PIName: Dan Negrut + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/UWMadison_Pool.yaml b/projects/UWMadison_Pool.yaml new file mode 100644 index 000000000..d5c9a0e22 --- /dev/null +++ b/projects/UWMadison_Pool.yaml @@ -0,0 +1,5 @@ +Department: Genomics & Genetics +Description: 'Population Genomics and the Genetic Basis of Adaptive Evolution - http://www.genetics.wisc.edu/user/338' +FieldOfScience: Biological Sciences +Organization: University of Wisconsin-Madison +PIName: John Pool diff --git a/projects/UWMadison_Solis-Lemus.yaml b/projects/UWMadison_Solis-Lemus.yaml new file mode 100644 index 000000000..f237cc4c9 --- /dev/null +++ b/projects/UWMadison_Solis-Lemus.yaml @@ -0,0 +1,7 @@ +Description: > + Using machine learning methods to identify sounds from audio recordings + in multiple regions of the world through time. +Department: Plant Pathology +FieldOfScience: Biological Sciences +Organization: University of Wisconsin-Madison +PIName: Claudia Solis-Lemus diff --git a/projects/UWMadison_Weigel.yaml b/projects/UWMadison_Weigel.yaml new file mode 100644 index 000000000..b42f69513 --- /dev/null +++ b/projects/UWMadison_Weigel.yaml @@ -0,0 +1,5 @@ +Description: Animal breeding and Genomics +Department: Animal and Dairy Sciences +FieldOfScience: Genomics +Organization: University of Wisconsin-Madison +PIName: Kent Weigel diff --git a/projects/Utah_Nelson.yaml b/projects/Utah_Nelson.yaml new file mode 100644 index 000000000..ba5ec48e5 --- /dev/null +++ b/projects/Utah_Nelson.yaml @@ -0,0 +1,7 @@ +Description: > + Monte Carlo research for the simulation of radiation transport for applications in medicine. + Will be looking at proton therapy applications specifically using the Geant4 wrapper, TOPAS. +Department: Department of Radiation Oncology +FieldOfScience: Physics and radiation therapy +Organization: University of Utah +PIName: Nicholas Nelson diff --git a/projects/Webster_Suo.yaml b/projects/Webster_Suo.yaml new file mode 100644 index 000000000..be3700428 --- /dev/null +++ b/projects/Webster_Suo.yaml @@ -0,0 +1,8 @@ +Description: > + This work aims to construct a flexible scan system using multiple cameras + that can correctly reconstruct 3D objects -- a human face with expression. The work + proposed and used mathematical models to automate the 3D object reconstruction. +Department: Computer and information science +FieldOfScience: Computer Science +Organization: Webster University +PIName: Xiaoyuan Suo diff --git a/projects/WichitaState_Hwang.yaml b/projects/WichitaState_Hwang.yaml new file mode 100644 index 000000000..a0767d0a6 --- /dev/null +++ b/projects/WichitaState_Hwang.yaml @@ -0,0 +1,9 @@ +Description: Analysis of porous media using pore-scale simulations of additively manufactured wicks with X-ray computed tomography. +Department: Department of Mechanical Engineering +FieldOfScience: Mechanical Engineering +Organization: Wichita State University +PIName: Gisuk Hwang + +Sponsor: + CampusGrid: + Name: OSG Connect diff --git a/projects/ePIC.yaml b/projects/ePIC.yaml new file mode 100644 index 000000000..0d3aa1337 --- /dev/null +++ b/projects/ePIC.yaml @@ -0,0 +1,8 @@ +Department: Physics +Description: the ePIC collaboration based out of the EIC +FieldOfScience: Nuclear Physics +Organization: Brookhaven National Laboratory +PIName: John Lajoie +Sponsor: + VirtualOrganization: + Name: EIC diff --git a/requirements-apache.txt b/requirements-apache.txt index b7691ceb6..2844e6680 100644 --- a/requirements-apache.txt +++ b/requirements-apache.txt @@ -1,31 +1,6 @@ -# *** NOTE *** -# You MUST keep entries in this file in sync with those in requirements-rootless.txt +-r requirements-rootless.txt -asn1>=2.2.0,<2.3.0 -certifi>=2019.3.9 -chardet>=3.0.4,<3.1 -click==6.7 -configobj>=5.0.6,<5.1 -Flask>=1.0.2,<1.1 -Flask-WTF>=0.14.2,<0.15 -GitPython>=3.1.9 -gunicorn>=19.9.0,<19.10 -icalendar>=4.0.0,<4.1.0 -idna==2.7 -itsdangerous==0.24 -Jinja2>=2.11.3,<2.12 -ldap3>=2.6.1 -MarkupSafe<2.1 -# ^^ MarkupSafe stuck on 2.0.x due to removal of "soft_unicode" symbol -python-dateutil>=2.7.3,<2.8 -python-gnupg -PyYAML>=5.4.1,<5.5 -requests>=2.25.0,<2.26 -six>=1.12.0,<1.13 -urllib3>=1.26.5,<1.27 -Werkzeug>=0.15.3,<0.16 -WTForms>=2.2.1,<2.3 -xmltodict>=0.11.0,<0.12 # mod-wsgi requires apache httpd headers (redhat package httpd-devel, ubuntu package apache2-dev) -mod-wsgi>=4.9.3,<4.10 +# also gcc and python headers (redhat package python39-devel or similar) +mod-wsgi~=4.9.4 diff --git a/requirements-rootless.txt b/requirements-rootless.txt index ec70c0925..f6a6a8232 100644 --- a/requirements-rootless.txt +++ b/requirements-rootless.txt @@ -1,28 +1,33 @@ -# *** NOTE *** -# You MUST keep entries in this file in sync with those in requirements-apache.txt +# This file is included in requirements-apache.txt -asn1>=2.2.0,<2.3.0 -certifi>=2019.3.9 -chardet>=3.0.4,<3.1 -click==6.7 -configobj>=5.0.6,<5.1 -Flask>=1.0.2,<1.1 -Flask-WTF>=0.14.2,<0.15 -GitPython>=3.1.9 -gunicorn>=19.9.0,<19.10 -icalendar>=4.0.0,<4.1.0 -idna==2.7 -itsdangerous==0.24 -Jinja2>=2.11.3,<2.12 -ldap3>=2.6.1 -MarkupSafe<2.1 -# ^^ MarkupSafe stuck on 2.0.x due to removal of "soft_unicode" symbol -python-dateutil>=2.7.3,<2.8 -python-gnupg -PyYAML>=5.4.1,<5.5 -requests>=2.25.0,<2.26 -six>=1.12.0,<1.13 -urllib3>=1.26.5,<1.27 -Werkzeug>=0.15.3,<0.16 -WTForms>=2.2.1,<2.3 -xmltodict>=0.11.0,<0.12 +asn1~=2.7.0 +blinker~=1.6.2 +certifi>=2023.5.7 +chardet~=5.1.0 +charset-normalizer~=3.1.0 +click~=8.1.3 +configobj~=5.0.8 +enum-compat~=0.0.3 +Flask~=2.3.2 +Flask-WTF~=1.1.1 +gitdb~=4.0.10 +GitPython~=3.1.31 +gunicorn~=20.1.0 +icalendar~=5.0.5 +idna~=3.4 +itsdangerous~=2.1.2 +Jinja2~=3.1.2 +ldap3~=2.9.1 +MarkupSafe~=2.1.2 +pyasn1~=0.5.0 +python-dateutil~=2.8.2 +python-gnupg~=0.5.0 +pytz>=2023.3 +PyYAML~=6.0 +requests~=2.31.0 +six~=1.16.0 +smmap~=5.0.0 +urllib3~=2.0.2 +Werkzeug~=2.3.4 +WTForms~=3.0.1 +xmltodict~=0.13.0 diff --git a/src/README.md b/src/README.md index 572c52677..eff54a945 100644 --- a/src/README.md +++ b/src/README.md @@ -279,9 +279,11 @@ There are three kinds of authorization types: - SciTokens: Issuer: https://chtc.cs.wisc.edu - Base Path: /chtc - Restricted Path: /PROTECTED/matyas,/PROTECTED/bbockelm - Map Subject: True + BasePath: /chtc + RestrictedPath: /PROTECTED/matyas,/PROTECTED/bbockelm + MapSubject: True + + (for backwards compat, `Base Path`, `Restricted Path`, and `Map Subject` are also accepted) This results in an issuer block that looks like @@ -293,8 +295,8 @@ There are three kinds of authorization types: See [the XrdSciTokens readme](https://github.com/xrootd/xrootd/tree/master/src/XrdSciTokens#readme) for a reference of what these mean. - `Restricted Path` is optional (and rarely set); it is omitted if not specified. - `Map Subject` is optional and defaults to `false` if not specified. + `RestrictedPath` is optional (and rarely set); it is omitted if not specified. + `MapSubject` is optional and defaults to `false` if not specified. It is only used in scitokens.cfg for the origin. ```yaml @@ -333,6 +335,27 @@ DirList: https://: DirList is the HTTPS URL of an XRootD service that can be used to get a directory listing. DirList is optional. +```yaml +CredentialGeneration: + Strategy: "Vault" or "OAuth2" + Issuer: "" + BasePath: "" + MaxScopeDepth: + VaultServer: ":" + VaultIssuer: "" +``` +CredentialGeneration is an optional block of information about how clients can obtain credentials for the namespace. +If specified: +- Strategy must be `OAuth2` or `Vault`, depending on whether OAuth2 or a Hashicorp Vault server is being used +- Issuer is a token issuer URL +- *BasePath* (optional): If using the `OAuth2` strategy - and the base path of the issuer does not match the + namespace path - set the base path so the correct scope prefix can be requested by the client +- MaxScopeDepth (optional) is the maximum number of path components a token's scope field may have; + note that scopes are relative to the BasePath. + If missing, assumed to be 0, i.e. the scope is always `/`. +- VaultServer is the endpoint for the Hashicorp Vault server used with the Vault strategy +- *VaultIssuer* (optional): If using the `Vault` strategy, this sets the issuer name (opaque string, not + a URL) to be used with the vault server. ### Contents of a cache or origin in resource data @@ -505,6 +528,16 @@ The JSON also contains an attribute `namespaces` that is a list of namespaces wi - `usetokenonread` is `true` if the namespace has a SciTokens entry in its Authorizations list and `false` otherwise - `caches` is a list of caches that support the namespace; each cache in the list contains the `endpoint`, `auth_endpoint`, and `resource` attributes as in the `caches` list above +- `credential_generation` is information about how to generate credentials that can access the namespace. + If not null, it has: + - `strategy`: either `OAuth2` or `Vault` + - `issuer`: the token issuer for the credentials + - `base_path`: the base_path to use for calculation of scopes. Only set if it is different from the namespace path; otherwise, null + - `max_scope_depth`: integer; the max number of levels you can get a credential to be scoped for; + "0" means that the scope will always be `/`. + Note that scopes are usually relative to the namespace path. + - `vault_server`: the Vault server for the `Vault` strategy or null + - `vault_issuer`: the Vault issuer for the `Vault` strategy (or null). The final result looks like ```json @@ -530,6 +563,7 @@ The final result looks like "resource": "RDS_AUTH_OSDF_CACHE" } ], + "credential_generation": null, "dirlisthost": null, "path": "/xenon/PROTECTED", "readhttps": true, @@ -540,6 +574,11 @@ The final result looks like "caches": [ (a whole bunch) ], + "credential_generation": { + "issuer": "https://osg-htc.org/ospool", + "max_scope_depth": 4, + "strategy": "OAuth2" + }, "dirlisthost": "https://origin-auth2001.chtc.wisc.edu:1095", "path": "/ospool/PROTECTED", "readhttps": true, diff --git a/src/app.py b/src/app.py index 94ff3e3b9..5dd601f23 100755 --- a/src/app.py +++ b/src/app.py @@ -4,7 +4,7 @@ import csv import flask import flask.logging -from flask import Flask, Response, make_response, request, render_template +from flask import Flask, Response, make_response, request, render_template, redirect, url_for, session from io import StringIO import logging import os @@ -12,15 +12,19 @@ import sys import traceback import urllib.parse +import requests +from wtforms import ValidationError +from flask_wtf.csrf import CSRFProtect from webapp import default_config -from webapp.common import readfile, to_xml_bytes, to_json_bytes, Filters, support_cors, simplify_attr_list, is_null, escape +from webapp.common import readfile, to_xml_bytes, to_json_bytes, Filters, support_cors, simplify_attr_list, is_null, escape, cache_control_private +from webapp.flask_common import create_accepted_response from webapp.exceptions import DataError, ResourceNotRegistered, ResourceMissingService -from webapp.forms import GenerateDowntimeForm, GenerateResourceGroupDowntimeForm +from webapp.forms import GenerateDowntimeForm, GenerateResourceGroupDowntimeForm, GenerateProjectForm from webapp.models import GlobalData from webapp.topology import GRIDTYPE_1, GRIDTYPE_2 from webapp.oasis_managers import get_oasis_manager_endpoint_info - +from webapp.github import create_file_pr, update_file_pr, GithubUser, GitHubAuth, GitHubRepoAPI, GithubRequestException, GithubReferenceExistsException, GithubNotFoundException try: import stashcache @@ -54,27 +58,22 @@ def _verify_config(cfg): app = Flask(__name__) app.config.from_object(default_config) app.config.from_pyfile("config.py", silent=True) + if "TOPOLOGY_CONFIG" in os.environ: app.config.from_envvar("TOPOLOGY_CONFIG", silent=False) _verify_config(app.config) + if "AUTH" in app.config: if app.debug: default_authorized = app.config["AUTH"] else: print("ignoring AUTH option when FLASK_ENV != development", file=sys.stderr) -if not app.config.get("SECRET_KEY"): - app.config["SECRET_KEY"] = "this is not very secret" -### Replace previous with this when we want to add CSRF protection -# if app.debug: -# app.config["SECRET_KEY"] = "this is not very secret" -# else: -# raise Exception("SECRET_KEY required when FLASK_ENV != development") + if "LOGLEVEL" in app.config: app.logger.setLevel(app.config["LOGLEVEL"]) global_data = GlobalData(app.config, strict=app.config.get("STRICT", app.debug)) - cilogon_pass = readfile(global_data.cilogon_ldap_passfile, app.logger) if not cilogon_pass: app.logger.warning("Note, no CILOGON_LDAP_PASSFILE configured; " @@ -85,11 +84,51 @@ def _verify_config(cfg): app.logger.warning("Note, no LIGO_LDAP_PASSFILE configured; " "LIGO DNs will be unavailable in authfiles.") +github_oauth_client_secret = readfile(global_data.github_oauth_client_secret, app.logger) +if not github_oauth_client_secret: + app.logger.warning("Note, no GITHUB_OAUTH_CLIENT_SECRET configured; " + "Auto PRs will be unavailable.") +else: + app.config['GITHUB_OAUTH_CLIENT_SECRET'] = github_oauth_client_secret.decode() + +auto_pr_gh_api_user = readfile(global_data.auto_pr_gh_api_user, app.logger) +if not auto_pr_gh_api_user: + app.logger.warning("Note, no AUTO_PR_GH_API_USER configured; " + "Auto PRs will be unavailable.") +else: + app.config['AUTO_PR_GH_API_USER'] = auto_pr_gh_api_user.decode() + +auto_pr_gh_api_token = readfile(global_data.auto_pr_gh_api_token, app.logger) +if not auto_pr_gh_api_token: + app.logger.warning("Note, no AUTO_PR_GH_API_TOKEN configured; " + "Auto PRs will be unavailable.") +else: + app.config['AUTO_PR_GH_API_TOKEN'] = auto_pr_gh_api_token.decode() + +csrf_secret_key = readfile(global_data.csrf_secret_key, app.logger) +if (os.environ.get('TESTING', False) or app.debug) and not csrf_secret_key: + app.config["SECRET_KEY"] = "this is not very secret" +elif not app.debug and not csrf_secret_key: + raise Exception("SECRET_KEY required when FLASK_ENV != development") +else: + app.config["SECRET_KEY"] = csrf_secret_key.decode() + +csrf = CSRFProtect() +csrf.init_app(app) + def _fix_unicode(text): """Convert a partial unicode string to full unicode""" return text.encode('utf-8', 'surrogateescape').decode('utf-8') +@app.after_request +def set_cache_control(response): + if response.status_code == 200: + # Cache results for 300s + response.cache_control.max_age = 300 + # Serve an expired entry for up to 100s while refreshing in the background + response.headers['Cache-Control'] += ', stale-while-revalidate=100' + return response @app.route('/') def homepage(): @@ -120,6 +159,7 @@ def schema(xsdfile): @app.route('/miscuser/xml') +@cache_control_private def miscuser_xml(): return Response(to_xml_bytes(global_data.get_contacts_data().get_tree(_get_authorized())), mimetype='text/xml') @@ -214,16 +254,32 @@ def collaborations_scitoken_text(): @app.route('/contacts') +@cache_control_private def contacts(): try: authorized = _get_authorized() contacts_data = global_data.get_contacts_data().without_duplicates() users_list = contacts_data.get_tree(_get_authorized())["Users"]["User"] - return _fix_unicode(render_template('contacts.html.j2', users=users_list, authorized=authorized)) + return Response(_fix_unicode(render_template('contacts.html.j2', users=users_list, authorized=authorized))) except (KeyError, AttributeError): app.log_exception(sys.exc_info()) return Response("Error getting users", status=503) # well, it's better than crashing +@app.route('/api/institutions') +def institutions(): + + resource_facilities = set(global_data.get_topology().facilities.keys()) + project_facilities = set(x['Organization'] for x in global_data.get_projects()['Projects']['Project']) + + facilities = project_facilities.union(resource_facilities) + + facility_data = [["Institution Name", "Has Resource(s)", "Has Project(s)"]] + for facility in sorted(facilities): + facility_data.append([facility, facility in resource_facilities, facility in project_facilities]) + + return create_accepted_response(facility_data, request.headers, default="text/csv") + + @app.route('/miscproject/xml') def miscproject_xml(): @@ -234,7 +290,21 @@ def miscproject_xml(): @support_cors def miscproject_json(): projects = simplify_attr_list(global_data.get_projects()["Projects"]["Project"], namekey="Name", del_name=False) - return Response(to_json_bytes(projects), mimetype='text/json') + return Response(to_json_bytes(projects), mimetype='application/json') + + +@app.route('/miscsite/json') +@support_cors +def miscsite_json(): + sites = {name: site.get_tree() for name, site in global_data.get_topology().sites.items()} + return Response(to_json_bytes(sites), mimetype='application/json') + + +@app.route('/miscfacility/json') +@support_cors +def miscfacility_json(): + facilities = {name: facility.get_tree() for name, facility in global_data.get_topology().facilities.items()} + return Response(to_json_bytes(facilities), mimetype='application/json') @app.route('/miscresource/json') @support_cors @@ -331,6 +401,33 @@ def authfile_public(): return _get_cache_authfile(public_only=True) +@app.route("/cache/grid-mapfile") +@support_cors +def cache_grid_mapfile(): + assert stashcache + fqdn = request.args.get("fqdn") + if not fqdn: + return Response("FQDN of cache server required in the 'fqdn' argument", status=400) + try: + return Response(stashcache.generate_cache_grid_mapfile(global_data, fqdn, suppress_errors=False), + mimetype="text/plain") + except ResourceNotRegistered as e: + return Response("# {}\n" + "# Please check your query or contact help@osg-htc.org\n" + .format(e), + mimetype="text/plain", status=404) + except DataError as e: + app.logger.error("{}: {}".format(request.full_path, e)) + return Response("# Error generating grid-mapfile for this FQDN:\n" + "# {}\n" + "# Please check configuration in OSG topology or contact help@osg-htc.org\n" + .format(e), + mimetype="text/plain", status=400) + except Exception: + app.log_exception(sys.exc_info()) + return Response("Server error getting grid-mapfile, please contact help@osg-htc.org", status=503) + + @app.route("/origin/Authfile") @app.route("/stashcache/origin-authfile") def origin_authfile(): @@ -343,6 +440,33 @@ def origin_authfile_public(): return _get_origin_authfile(public_only=True) +@app.route("/origin/grid-mapfile") +@support_cors +def origin_grid_mapfile(): + assert stashcache + fqdn = request.args.get("fqdn") + if not fqdn: + return Response("FQDN of origin server required in the 'fqdn' argument", status=400) + try: + return Response(stashcache.generate_origin_grid_mapfile(global_data, fqdn, suppress_errors=False), + mimetype="text/plain") + except ResourceNotRegistered as e: + return Response("# {}\n" + "# Please check your query or contact help@osg-htc.org\n" + .format(e), + mimetype="text/plain", status=404) + except DataError as e: + app.logger.error("{}: {}".format(request.full_path, e)) + return Response("# Error generating grid-mapfile for this FQDN:\n" + "# {}\n" + "# Please check configuration in OSG topology or contact help@osg-htc.org\n" + .format(e), + mimetype="text/plain", status=400) + except Exception: + app.log_exception(sys.exc_info()) + return Response("Server error getting grid-mapfile, please contact help@osg-htc.org", status=503) + + @app.route("/stashcache/scitokens") def scitokens(): if not stashcache: @@ -361,21 +485,23 @@ def scitokens(): return Response(origin_scitokens, mimetype="text/plain") except ResourceNotRegistered as e: return Response("# {}\n" - "# Please check your query or contact help@opensciencegrid.org\n" + "# Please check your query or contact help@osg-htc.org\n" .format(str(e)), mimetype="text/plain", status=404) except DataError as e: app.logger.error("{}: {}".format(request.full_path, str(e))) return Response("# Error generating scitokens config for this FQDN: {}\n".format(str(e)) + - "# Please check configuration in OSG topology or contact help@opensciencegrid.org\n", + "# Please check configuration in OSG topology or contact help@osg-htc.org\n", mimetype="text/plain", status=400) except Exception: app.log_exception(sys.exc_info()) - return Response("Server error getting scitokens config, please contact help@opensciencegrid.org", status=503) + return Response("Server error getting scitokens config, please contact help@osg-htc.org", status=503) +@app.route("/osdf/namespaces") @app.route("/stashcache/namespaces") @app.route("/stashcache/namespaces.json") # for testing; remove before merging +@support_cors def stashcache_namespaces_json(): if not stashcache: return Response("Can't get scitokens config: stashcache module unavailable", status=503) @@ -384,21 +510,22 @@ def stashcache_namespaces_json(): mimetype='application/json') except ResourceNotRegistered as e: return Response("# {}\n" - "# Please check your query or contact help@opensciencegrid.org\n" + "# Please check your query or contact help@osg-htc.org\n" .format(str(e)), mimetype="text/plain", status=404) except DataError as e: app.logger.error("{}: {}".format(request.full_path, str(e))) return Response("# Error generating namespaces json file: {}\n".format(str(e)) + - "# Please check configuration in OSG topology or contact help@opensciencegrid.org\n", + "# Please check configuration in OSG topology or contact help@osg-htc.org\n", mimetype="text/plain", status=400) except Exception: app.log_exception(sys.exc_info()) - return Response("Server error getting namespaces json file, please contact help@opensciencegrid.org", + return Response("Server error getting namespaces json file, please contact help@osg-htc.org", status=503) @app.route("/oasis-managers/json") +@cache_control_private def oasis_managers(): if not _get_authorized(): return Response("Not authorized", status=403) @@ -427,17 +554,17 @@ def _get_cache_authfile(public_only): suppress_errors=False) except (ResourceNotRegistered, ResourceMissingService) as e: return Response("# {}\n" - "# Please check your query or contact help@opensciencegrid.org\n" + "# Please check your query or contact help@osg-htc.org\n" .format(str(e)), mimetype="text/plain", status=404) except DataError as e: app.logger.error("{}: {}".format(request.full_path, str(e))) return Response("# Error generating authfile for this FQDN: {}\n".format(str(e)) + - "# Please check configuration in OSG topology or contact help@opensciencegrid.org\n", + "# Please check configuration in OSG topology or contact help@osg-htc.org\n", mimetype="text/plain", status=400) except Exception: app.log_exception(sys.exc_info()) - return Response("Server error getting authfile, please contact help@opensciencegrid.org", status=503) + return Response("Server error getting authfile, please contact help@osg-htc.org", status=503) return Response(auth, mimetype="text/plain") @@ -451,17 +578,17 @@ def _get_origin_authfile(public_only): suppress_errors=False, public_origin=public_only) except (ResourceNotRegistered, ResourceMissingService) as e: return Response("# {}\n" - "# Please check your query or contact help@opensciencegrid.org\n" + "# Please check your query or contact help@osg-htc.org\n" .format(str(e)), mimetype="text/plain", status=404) except DataError as e: app.logger.error("{}: {}".format(request.full_path, str(e))) return Response("# Error generating authfile for this FQDN: {}\n".format(str(e)) + - "# Please check configuration in OSG topology or contact help@opensciencegrid.org\n", + "# Please check configuration in OSG topology or contact help@osg-htc.org\n", mimetype="text/plain", status=400) except Exception: app.log_exception(sys.exc_info()) - return Response("Server error getting authfile, please contact help@opensciencegrid.org", status=503) + return Response("Server error getting authfile, please contact help@osg-htc.org", status=503) return Response(auth, mimetype="text/plain") @@ -479,17 +606,17 @@ def _get_scitoken_file(fqdn, get_scitoken_function): except ResourceNotRegistered as e: return Response("# {}\n" - "# Please check your query or contact help@opensciencegrid.org\n" + "# Please check your query or contact help@osg-htc.org\n" .format(str(e)), mimetype="text/plain", status=404) except DataError as e: app.logger.error("{}: {}".format(request.full_path, str(e))) return Response("# Error generating scitokens config for this FQDN: {}\n".format(str(e)) + - "# Please check configuration in OSG topology or contact help@opensciencegrid.org\n", + "# Please check configuration in OSG topology or contact help@osg-htc.org\n", mimetype="text/plain", status=400) except Exception: app.log_exception(sys.exc_info()) - return Response("Server error getting scitokens config, please contact help@opensciencegrid.org", status=503) + return Response("Server error getting scitokens config, please contact help@osg-htc.org", status=503) def _get_cache_scitoken_file(): @@ -681,6 +808,132 @@ def render_form(**kwargs): edit_url=edit_url, site_dir_url=site_dir_url, new_url=new_url) + +@app.route("/generate_project_yaml", methods=["GET", "POST"]) +def generate_project_yaml(): + + def render_form(**kwargs): + institutions = list(global_data.get_mappings().project_institution.items()) + session.pop("form_data", None) + + return render_template("generate_project_yaml.html.j2", form=form, infos=form.infos, institutions=institutions, **kwargs) + + def validate_project_name(form, field): + project_names = set(x['Name'] for x in global_data.get_projects()['Projects']['Project']) + if field.data in project_names: + raise ValidationError(f"{field.data} is already registered in OSG Topology. ") + + form = GenerateProjectForm(request.form, **request.args, **session.get("form_data", {})) + form.field_of_science.choices = _make_choices(global_data.get_mappings().nsfscience.keys(), select_one=True) + + # Add this validator if it is not their + if not len(form.project_name.validators) > 1: + form.project_name.validators.append(validate_project_name) + + # If they have returned after logging into Github make the Submission button stand out + if "github_login" in session: + form.auto_submit.label.text = "Submit Automatically" + form.auto_submit.render_kw = { + "class": "btn btn-warning" + } + + # Report any external errors + if "error" in request.args: + return render_form(error=request.args['error']) + + # Anything past this point needs a valid form + if not form.validate_on_submit(): + return render_form() + + # If the user has their Github verified + if request.method == "POST" and "github_login" in session and "auto_submit" in request.form: + + try: + # Gather necessary data + create_pr_response = create_file_pr( + file_path=f"projects/{request.values['project_name']}.yaml", + file_content=form.get_yaml(), + branch=f"add-project-{request.values['project_name']}", + message=f"Add Project {request.values['project_name']}", + committer=GithubUser.from_token(session["github_login"]['access_token']), + fork_repo=GitHubAuth( + app.config["AUTO_PR_GH_API_USER"], + app.config["AUTO_PR_GH_API_TOKEN"] + ).target_repo(app.config["AUTO_PR_GH_API_USER"], 'topology'), + root_repo=GitHubAuth( + app.config["AUTO_PR_GH_API_USER"], + app.config["AUTO_PR_GH_API_TOKEN"] + ).target_repo('opensciencegrid', 'topology'), + ) + + form.clear() + + return render_form(pr_url=create_pr_response['html_url']) + + except GithubReferenceExistsException as error: + return render_form(error="A Pull-Request for this project already exists, change Project Name and try again.") + + except GithubRequestException as error: + return render_form(error="Unexpected Error: Please submit manually.") + + # Start Github Oauth Flow + if request.method == "POST" and "auto_submit" in request.form: + + session['form_data'] = form.as_dict() + return redirect(f"/github/login?scope=user:email read:user") + + # Generate the yaml for manual addition + if request.method == "POST" and "manual_submit" in request.form: + + form.yaml_output.data = form.get_yaml() + return render_form(form_complete=True) + + return render_form() + + +@app.route("/github/login", methods=["GET"]) +def github_login(): + """Used to login to Github and return to previous location""" + + if "code" in request.args: + if request.args['state'] != session.pop("state"): + return Response("Github returned incorrect state. Try again or email support@osg-htc.org for support.", 401) + + data = { + "code": request.args['code'], + "client_id": "2bf9c248a619961eb14a", + "client_secret": app.config["GITHUB_OAUTH_CLIENT_SECRET"], + "redirect_uri": request.args['redirect_uri'] + } + + redirect_data = {} + try: + response = requests.post("https://github.com/login/oauth/access_token", data=data, headers={"Accept": "application/json"}) + session['github_login'] = response.json() + + except Exception as error: + redirect_data['error'] = f"Could not complete exchange with Github for Token: {error}" + + redirect_url = urllib.parse.urlparse(request.args['redirect_uri']).geturl() + urlencoded_redirect_data = urllib.parse.urlencode(redirect_data) + + return redirect(f"{redirect_url}?{urlencoded_redirect_data}") + + else: + session['state'] = os.urandom(24).hex() + + params = { + "client_id": "2bf9c248a619961eb14a", + "redirect_uri": f"{request.url_root[:-1]}{url_for('github_login')}?redirect_uri={request.environ.get('HTTP_REFERER')}", + "scope": request.args['scope'], + "state": session['state'] + } + + AUTH_URL = "https://github.com/login/oauth/authorize" + + return redirect(f"{AUTH_URL}?{urllib.parse.urlencode(params)}", code=303) + + def _make_choices(iterable, select_one=False): c = [(_fix_unicode(x), _fix_unicode(x)) for x in sorted(iterable)] if select_one: diff --git a/src/net_name_addr_utils.py b/src/net_name_addr_utils.py index 051a774e9..63fdf5bd8 100755 --- a/src/net_name_addr_utils.py +++ b/src/net_name_addr_utils.py @@ -275,10 +275,11 @@ def get_network_interfaces(pattern): retval = {} for ifa in ifap_iter(ifap): - name = ifa.ifa_name - i = retval.get(name) + name_bytes = ifa.ifa_name + name_str = name_bytes.decode('latin-1') + i = retval.get(name_str) if not i: - i = retval[name] = NetworkInterface(name) + i = retval[name_str] = NetworkInterface(name_str) family, addr = getfamaddr(ifa.ifa_addr.contents) if addr: address_list = i.addresses.setdefault(family, set()) @@ -306,9 +307,9 @@ def iface_matches(network_iface, pattern): `network_iface` matches `pattern`, False otherwise """ - if fnmatch.fnmatch(network_iface.name, pattern): + if fnmatch.fnmatch(network_iface, pattern): return True - for family, addrs in network_iface.addresses.items(): + for _, addrs in network_iface.addresses.items(): if fnmatch.filter(addrs, pattern): return True return False diff --git a/src/schema/miscproject.xsd b/src/schema/miscproject.xsd index 819af583d..8256c4699 100644 --- a/src/schema/miscproject.xsd +++ b/src/schema/miscproject.xsd @@ -1,11 +1,5 @@ - - - - - - diff --git a/src/schema/rgsummary.xsd b/src/schema/rgsummary.xsd index 588cafcd6..d0b68bb79 100644 --- a/src/schema/rgsummary.xsd +++ b/src/schema/rgsummary.xsd @@ -4,6 +4,8 @@ + + @@ -29,6 +31,7 @@ + @@ -37,11 +40,12 @@ + - + @@ -59,6 +63,8 @@ + + @@ -147,6 +153,7 @@ + @@ -184,6 +191,7 @@ + diff --git a/src/schema/vosummary.xsd b/src/schema/vosummary.xsd index e7c66a68f..338affca3 100644 --- a/src/schema/vosummary.xsd +++ b/src/schema/vosummary.xsd @@ -4,6 +4,8 @@ + + diff --git a/src/stashcache.py b/src/stashcache.py index 6c1f83164..838bf90c0 100644 --- a/src/stashcache.py +++ b/src/stashcache.py @@ -1,19 +1,19 @@ from collections import defaultdict from typing import Dict, List, Optional -from webapp.common import is_null, readfile, PreJSON, XROOTD_CACHE_SERVER, XROOTD_ORIGIN_SERVER +from webapp.common import is_null, PreJSON, XROOTD_CACHE_SERVER, XROOTD_ORIGIN_SERVER from webapp.exceptions import DataError, ResourceNotRegistered, ResourceMissingService -from webapp.ldap_data import get_ligo_ldap_dn_list from webapp.models import GlobalData from webapp.topology import Resource, ResourceGroup, Topology -from webapp.vos_data import AuthMethod, DNAuth, SciTokenAuth, Namespace, \ - parse_authz, ANY, ANY_PUBLIC - +from webapp.vos_data import VOsData +from webapp.data_federation import AuthMethod, DNAuth, SciTokenAuth, Namespace, parse_authz import logging log = logging.getLogger(__name__) +ANY = "ANY" +ANY_PUBLIC = "ANY_PUBLIC" def _log_or_raise(suppress_errors: bool, an_exception: BaseException, logmethod=log.debug): if suppress_errors: @@ -25,6 +25,9 @@ def _log_or_raise(suppress_errors: bool, an_exception: BaseException, logmethod= def _resource_has_cache(resource: Resource) -> bool: return XROOTD_CACHE_SERVER in resource.service_names +def _resource_has_origin(resource: Resource) -> bool: + return XROOTD_ORIGIN_SERVER in resource.service_names + def _get_resource_with_service(fqdn: Optional[str], service_name: str, topology: Topology, suppress_errors: bool) -> Optional[Resource]: @@ -124,6 +127,108 @@ def get_supported_caches_for_namespace(namespace: Namespace, topology: Topology) and resource_allows_namespace(cache, namespace)] +class _IdNamespaceData: + def __init__(self): + self.public_paths = set() + self.id_to_paths = defaultdict(set) + self.id_to_str = {} + self.grid_mapfile_lines = set() + self.warnings = [] + + @classmethod + def for_cache(cls, global_data: GlobalData, topology: Topology, vos_data: VOsData, legacy: bool, + cache_resource: Optional[Resource], public_cache: bool) -> "_IdNamespaceData": + self = cls() + + ligo_authz_list: List[AuthMethod] = [] + + # This is needed so we can fetch the LIGO DNs only for caches that + # actually support LIGO data, instead of hitting their LDAP server for + # every cache. + def fetch_ligo_authz_list_if_needed(): + if not ligo_authz_list: + for dn in global_data.get_ligo_dn_list(): + ligo_authz_list.append(parse_authz(f"DN:{dn}")[0]) + return ligo_authz_list + + for stashcache_obj in vos_data.stashcache_by_vo_name.values(): + for path, namespace in stashcache_obj.namespaces.items(): + if not namespace_allows_cache_resource(namespace, cache_resource): + continue + if cache_resource and not resource_allows_namespace(cache_resource, namespace): + continue + if namespace.is_public(): + self.public_paths.add(path) + continue + if public_cache: + continue + + # Extend authz list with LIGO DNs if applicable + extended_authz_list = namespace.authz_list + if path == "/user/ligo": + if legacy: + extended_authz_list += fetch_ligo_authz_list_if_needed() + else: + self.warnings.append("# LIGO DNs unavailable\n") + + for authz in extended_authz_list: + if authz.used_in_authfile: + self.id_to_paths[authz.get_authfile_id()].add(path) + self.id_to_str[authz.get_authfile_id()] = str(authz) + if authz.used_in_grid_mapfile: + self.grid_mapfile_lines.add(authz.get_grid_mapfile_line()) + + return self + + @classmethod + def for_origin(cls, topology: Topology, vos_data: VOsData, origin_resource: Optional[Resource], + public_origin: bool) -> "_IdNamespaceData": + self = cls() + for vo_name, stashcache_obj in vos_data.stashcache_by_vo_name.items(): + for path, namespace in stashcache_obj.namespaces.items(): + if not namespace_allows_origin_resource(namespace, origin_resource): + continue + if not resource_allows_namespace(origin_resource, namespace): + continue + if namespace.is_public(): + self.public_paths.add(path) + continue + if public_origin: + continue + + # The Authfile for origins should contain only caches and the origin itself, via SSL (i.e. DNs). + # Ignore FQANs and DNs listed in the namespace's authz list. + authz_list = [] + + allowed_resources = [origin_resource] + # Add caches + allowed_caches = get_supported_caches_for_namespace(namespace, topology) + if allowed_caches: + allowed_resources.extend(allowed_caches) + else: + # TODO This situation should be caught by the CI + self.warnings.append(f"# WARNING: No working cache / namespace combinations found for {path}") + + for resource in allowed_resources: + dn = resource.data.get("DN") + if dn: + authz_list.append(DNAuth(dn)) + else: + self.warnings.append( + f"# WARNING: Resource {resource.name} was skipped for VO {vo_name}, namespace {path}" + f" because the resource does not provide a DN." + ) + continue + + for authz in authz_list: + if authz.used_in_authfile: + self.id_to_paths[authz.get_authfile_id()].add(path) + self.id_to_str[authz.get_authfile_id()] = str(authz) + if authz.used_in_grid_mapfile: + self.grid_mapfile_lines.add(authz.get_grid_mapfile_line()) + return self + + def generate_cache_authfile(global_data: GlobalData, fqdn=None, legacy=True, @@ -132,59 +237,35 @@ def generate_cache_authfile(global_data: GlobalData, Generate the Xrootd authfile needed by an StashCache cache server. This contains authenticated data only, no public directories. """ - authfile = "" - warnings = "" - id_to_dir = defaultdict(set) - id_to_str = {} - topology = global_data.get_topology() + vos_data = global_data.get_vos_data() resource = None if fqdn: resource = _get_cache_resource(fqdn, topology, suppress_errors) if not resource: return "" - ligo_authz_list: List[AuthMethod] = [] - - def fetch_ligo_authz_list_if_needed(): - if not ligo_authz_list: - for dn in global_data.get_ligo_dn_list(): - ligo_authz_list.append(parse_authz(f"DN:{dn}")[0]) - return ligo_authz_list - - vos_data = global_data.get_vos_data() - for stashcache_obj in vos_data.stashcache_by_vo_name.values(): - for dirname, namespace in stashcache_obj.namespaces.items(): - if not namespace_allows_cache_resource(namespace, resource): - continue - if resource and not resource_allows_namespace(resource, namespace): - continue - if namespace.is_public(): - continue - - # Extend authz list with LIGO DNs if applicable - extended_authz_list = namespace.authz_list - if dirname == "/user/ligo": - if legacy: - extended_authz_list += fetch_ligo_authz_list_if_needed() - else: - warnings += "# LIGO DNs unavailable\n" - - for authz in extended_authz_list: - if authz.used_in_authfile: - id_to_dir[authz.get_authfile_id()].add(dirname) - id_to_str[authz.get_authfile_id()] = str(authz) + idns = _IdNamespaceData.for_cache( + global_data=global_data, + topology=topology, + vos_data=vos_data, + legacy=legacy, + cache_resource=resource, + public_cache=False, + ) # TODO: improve message and turn this into a warning - if not id_to_dir: + if not idns.id_to_paths: raise DataError("Cache does not support any protected namespaces") - for authfile_id in id_to_dir: - paths_acl = " ".join(f"{p} rl" for p in sorted(id_to_dir[authfile_id])) - authfile += f"# {id_to_str[authfile_id]}\n" - authfile += f"{authfile_id} {paths_acl}\n" + authfile_lines = [] + authfile_lines.extend(idns.warnings) + for authfile_id in idns.id_to_paths: + paths_acl = " ".join(f"{p} rl" for p in sorted(idns.id_to_paths[authfile_id])) + authfile_lines.append(f"# {idns.id_to_str[authfile_id]}") + authfile_lines.append(f"{authfile_id} {paths_acl}") - return warnings + authfile + return "\n".join(authfile_lines) + "\n" def generate_public_cache_authfile(global_data: GlobalData, fqdn=None, legacy=True, suppress_errors=True) -> str: @@ -192,38 +273,75 @@ def generate_public_cache_authfile(global_data: GlobalData, fqdn=None, legacy=Tr Generate the Xrootd authfile needed for public caches. This contains public data only, no authenticated data. """ _ = legacy - authfile = "u * /user/ligo -rl \\\n" - topology = global_data.get_topology() + vos_data = global_data.get_vos_data() resource = None if fqdn: resource = _get_cache_resource(fqdn, topology, suppress_errors) if not resource: return "" - public_dirs = set() - vos_data = global_data.get_vos_data() - for stashcache_obj in vos_data.stashcache_by_vo_name.values(): - for dirname, namespace in stashcache_obj.namespaces.items(): - if not namespace_allows_cache_resource(namespace, resource): - continue - if resource and not resource_allows_namespace(resource, namespace): - continue - if namespace.is_public(): - public_dirs.add(dirname) + idns = _IdNamespaceData.for_cache( + global_data=global_data, + topology=topology, + vos_data=vos_data, + legacy=legacy, + cache_resource=resource, + public_cache=True, + ) # TODO: improve message and turn this into a warning - if not public_dirs: + if not idns.public_paths: raise DataError("Cache does not support any public namespaces") - for dirname in sorted(public_dirs): - authfile += " {} rl \\\n".format(dirname) + authfile_lines = [] + authfile_lines.extend(idns.warnings) + authfile_lines.append("u * /user/ligo -rl \\") + + for dirname in sorted(idns.public_paths): + authfile_lines.append(f" {dirname} rl \\") # Delete trailing ' \' from the last line - if authfile.endswith(" \\\n"): - authfile = authfile[:-3] + "\n" + if authfile_lines[-1].endswith(" \\"): + authfile_lines[-1] = authfile_lines[-1][:-2] + + return "\n".join(authfile_lines) + "\n" + +def generate_cache_grid_mapfile(global_data: GlobalData, + fqdn=None, + legacy=True, + suppress_errors=True) -> str: + """ + Generate a grid-mapfile to map DNs to the DN hashes for a cache server, given the FQDN + of the cache server and whether to include LIGO DNs. + """ + topology = global_data.get_topology() + vos_data = global_data.get_vos_data() + resource = None + if fqdn: + resource = _get_cache_resource(fqdn, topology, suppress_errors) + if not resource: + return "" - return authfile + ligo_authz_list: List[AuthMethod] = [] + if legacy: + for dn in global_data.get_ligo_dn_list(): + ligo_authz_list.append(parse_authz(f"DN:{dn}")[0]) + + idns = _IdNamespaceData.for_cache( + global_data=global_data, + topology=topology, + vos_data=vos_data, + legacy=legacy, + cache_resource=resource, + public_cache=False, + ) + + grid_mapfile_lines = [] + grid_mapfile_lines.extend(idns.warnings) + grid_mapfile_lines.extend(sorted(idns.grid_mapfile_lines)) + + return "\n".join(grid_mapfile_lines) + "\n" def generate_cache_scitokens(global_data: GlobalData, fqdn: str, suppress_errors=True) -> str: @@ -275,8 +393,8 @@ def generate_cache_scitokens(global_data: GlobalData, fqdn: str, suppress_errors restricted_path=None, map_subject=False) cache_authz_list.append(dummy_auth) - issuer_blocks = [a.get_scitokens_conf_block(XROOTD_CACHE_SERVER) for a in cache_authz_list] - issuer_blocks_str = "\n".join(issuer_blocks) + issuer_blocks = set(a.get_scitokens_conf_block(XROOTD_CACHE_SERVER) for a in cache_authz_list) + issuer_blocks_str = "\n".join(sorted(issuer_blocks)) allowed_vos_str = ", ".join(sorted(allowed_vos)) return template.format(**locals()).rstrip() + "\n" @@ -299,71 +417,49 @@ def generate_origin_authfile(global_data: GlobalData, fqdn: str, suppress_errors if not origin_resource: return "" - public_paths = set() - id_to_paths = defaultdict(set) - id_to_str = {} - warnings = [] - - for vo_name, stashcache_obj in vos_data.stashcache_by_vo_name.items(): - for path, namespace in stashcache_obj.namespaces.items(): - if not namespace_allows_origin_resource(namespace, origin_resource): - continue - if not resource_allows_namespace(origin_resource, namespace): - continue - if namespace.is_public(): - public_paths.add(path) - continue - if public_origin: - continue + idns = _IdNamespaceData.for_origin(topology, vos_data, origin_resource, public_origin) - # The Authfile for origins should contain only caches and the origin itself, via SSL (i.e. DNs). - # Ignore FQANs and DNs listed in the namespace's authz list. - authz_list = [] - - allowed_resources = [origin_resource] - # Add caches - allowed_caches = get_supported_caches_for_namespace(namespace, topology) - if allowed_caches: - allowed_resources.extend(allowed_caches) - else: - # TODO This situation should be caught by the CI - warnings.append(f"# WARNING: No working cache / namespace combinations found for {path}") - - for resource in allowed_resources: - dn = resource.data.get("DN") - if dn: - authz_list.append(DNAuth(dn)) - else: - warnings.append( - f"# WARNING: Resource {resource.name} was skipped for VO {vo_name}, namespace {path}" - f" because the resource does not provide a DN." - ) - continue - - for authz in authz_list: - if authz.used_in_authfile: - id_to_paths[authz.get_authfile_id()].add(path) - id_to_str[authz.get_authfile_id()] = str(authz) - - if not id_to_paths and not public_paths: + if not idns.id_to_paths and not idns.public_paths: raise DataError("Origin does not support any namespaces") authfile_lines = [] - authfile_lines.extend(warnings) - for authfile_id in id_to_paths: - paths_acl = " ".join(f"{p} lr" for p in sorted(id_to_paths[authfile_id])) - authfile_lines.append(f"# {id_to_str[authfile_id]}") + authfile_lines.extend(idns.warnings) + for authfile_id in idns.id_to_paths: + paths_acl = " ".join(f"{p} lr" for p in sorted(idns.id_to_paths[authfile_id])) + authfile_lines.append(f"# {idns.id_to_str[authfile_id]}") authfile_lines.append(f"{authfile_id} {paths_acl}") # Public paths must be at the end - if public_origin and public_paths: + if public_origin and idns.public_paths: authfile_lines.append("") - paths_acl = " ".join(f"{p} lr" for p in sorted(public_paths)) + paths_acl = " ".join(f"{p} lr" for p in sorted(idns.public_paths)) authfile_lines.append(f"u * {paths_acl}") return "\n".join(authfile_lines) + "\n" +def generate_origin_grid_mapfile(global_data: GlobalData, fqdn: str, suppress_errors=True) -> str: + """ + Generate a grid-mapfile to map DNs to the DN hashes for an origin server given its FQDN. + + """ + topology = global_data.get_topology() + vos_data = global_data.get_vos_data() + origin_resource = None + if fqdn: + origin_resource = _get_origin_resource(fqdn, topology, suppress_errors=suppress_errors) + if not origin_resource: + return "" + + idns = _IdNamespaceData.for_origin(topology, vos_data, origin_resource, public_origin=False) + + grid_mapfile_lines = [] + grid_mapfile_lines.extend(idns.warnings) + grid_mapfile_lines.extend(sorted(idns.grid_mapfile_lines)) + + return "\n".join(grid_mapfile_lines) + "\n" + + def generate_origin_scitokens(global_data: GlobalData, fqdn: str, suppress_errors=True) -> str: """ Generate the SciTokens needed by a StashCache origin server, given the fqdn @@ -413,13 +509,28 @@ def generate_origin_scitokens(global_data: GlobalData, fqdn: str, suppress_error restricted_path=None, map_subject=False) origin_authz_list.append(dummy_auth) - issuer_blocks = [a.get_scitokens_conf_block(XROOTD_ORIGIN_SERVER) for a in origin_authz_list] - issuer_blocks_str = "\n".join(issuer_blocks) + issuer_blocks = set(a.get_scitokens_conf_block(XROOTD_ORIGIN_SERVER) for a in origin_authz_list) + issuer_blocks_str = "\n".join(sorted(issuer_blocks)) allowed_vos_str = ", ".join(sorted(allowed_vos)) return template.format(**locals()).rstrip() + "\n" +def get_credential_generation_dict_for_namespace(ns: Namespace) -> Optional[Dict]: + if not ns.credential_generation: + return None + cg = ns.credential_generation + info = { + "strategy": cg.strategy, + "issuer": cg.issuer, + "base_path": cg.base_path or None, + "max_scope_depth": cg.max_scope_depth or 0, + "vault_server": cg.vault_server or None, + "vault_issuer": cg.vault_issuer or None + } + return info + + def get_namespaces_info(global_data: GlobalData) -> PreJSON: """Return data for the /stashcache/namespaces JSON endpoint. @@ -428,11 +539,17 @@ def get_namespaces_info(global_data: GlobalData) -> PreJSON: """ # Helper functions - def _cache_resource_dict(r: Resource): - endpoint = f"{r.fqdn}:8000" - auth_endpoint = f"{r.fqdn}:8443" + + def _service_resource_dict( + r: Resource, + service_name, + auth_port_default: int, + unauth_port_default: int + ): + endpoint = f"{r.fqdn}:{unauth_port_default}" + auth_endpoint = f"{r.fqdn}:{auth_port_default}" for svc in r.services: - if svc.get("Name") == XROOTD_CACHE_SERVER: + if svc.get("Name") == service_name: if not is_null(svc, "Details", "endpoint_override"): endpoint = svc["Details"]["endpoint_override"] if not is_null(svc, "Details", "auth_endpoint_override"): @@ -440,6 +557,12 @@ def _cache_resource_dict(r: Resource): break return {"endpoint": endpoint, "auth_endpoint": auth_endpoint, "resource": r.name} + def _cache_resource_dict(r: Resource): + return _service_resource_dict(r=r, service_name=XROOTD_CACHE_SERVER, auth_port_default=8443, unauth_port_default=8000) + + def _origin_resource_dict(r: Resource): + return _service_resource_dict(r=r, service_name=XROOTD_CACHE_SERVER, auth_port_default=1095, unauth_port_default=1094) + def _namespace_dict(ns: Namespace): nsdict = { "path": ns.path, @@ -448,32 +571,88 @@ def _namespace_dict(ns: Namespace): "writebackhost": ns.writeback, "dirlisthost": ns.dirlist, "caches": [], + "origins": [], + "credential_generation": get_credential_generation_dict_for_namespace(ns), } for cache_name, cache_resource_obj in cache_resource_objs.items(): - if resource_allows_namespace(cache_resource_obj, ns) and namespace_allows_cache_resource(ns, cache_resource_obj): + if (resource_allows_namespace(cache_resource_obj, ns) and + namespace_allows_cache_resource(ns, cache_resource_obj)): nsdict["caches"].append(cache_resource_dicts[cache_name]) + + nsdict["caches"].sort(key=lambda d: d["resource"]) + + for origin_name, origin_resource_obj in origin_resource_objs.items(): + if (resource_allows_namespace(origin_resource_obj, ns) and + namespace_allows_origin_resource(ns, origin_resource_obj)): + nsdict["origins"].append(origin_resource_dicts[origin_name]) + + nsdict["origins"].sort(key=lambda d: d["resource"]) + return nsdict + + def _resource_has_downed_service( + r: Resource, + t: Topology, + service_name + ): + if r.name not in t.present_downtimes_by_resource: + return False + downtimes = t.present_downtimes_by_resource[r.name] + for dt in downtimes: + try: + if service_name in dt.service_names: + return True + except (KeyError, AttributeError): + continue + return False + + def _resource_has_downed_cache(r: Resource, t: Topology): + return _resource_has_downed_service(r, t, XROOTD_CACHE_SERVER) + + def _resource_has_downed_origin(r: Resource, t: Topology): + return _resource_has_downed_service(r, t, XROOTD_ORIGIN_SERVER) + # End helper functions - resource_groups: List[ResourceGroup] = global_data.get_topology().get_resource_group_list() + topology = global_data.get_topology() + resource_groups: List[ResourceGroup] = topology.get_resource_group_list() vos_data = global_data.get_vos_data() + # Build a dict of cache resources + cache_resource_objs = {} # type: Dict[str, Resource] cache_resource_dicts = {} # type: Dict[str, Dict] for group in resource_groups: for resource in group.resources: - if _resource_has_cache(resource): + if (_resource_has_cache(resource) + and resource.is_active + and not _resource_has_downed_cache(resource, topology) + ): cache_resource_objs[resource.name] = resource cache_resource_dicts[resource.name] = _cache_resource_dict(resource) + # Build a dict of origin resources + + origin_resource_objs = {} # type: Dict[str, Resource] + origin_resource_dicts = {} # type: Dict[str, Dict] + + for group in resource_groups: + for resource in group.resources: + if (_resource_has_origin(resource) + and resource.is_active + and not _resource_has_downed_origin(resource, topology) + ): + origin_resource_objs[resource.name] = resource + origin_resource_dicts[resource.name] = _origin_resource_dict(resource) + result_namespaces = [] for stashcache_obj in vos_data.stashcache_by_vo_name.values(): for namespace in stashcache_obj.namespaces.values(): result_namespaces.append(_namespace_dict(namespace)) return PreJSON({ - "caches": list(cache_resource_dicts.values()), - "namespaces": result_namespaces + "caches": sorted(list(cache_resource_dicts.values()), key=lambda x: x["resource"]), + "namespaces": sorted(result_namespaces, key=lambda x: x["path"]) }) diff --git a/src/static/images/map/cache.svg b/src/static/images/map/cache.svg index 11b20ee05..fb2a5fdca 100644 --- a/src/static/images/map/cache.svg +++ b/src/static/images/map/cache.svg @@ -1 +1,27 @@ - \ No newline at end of file + + + + + + + + + + + + + diff --git a/src/static/images/map/cache_and_origin.svg b/src/static/images/map/cache_and_origin.svg index 7ba6eadbb..11fe73983 100644 --- a/src/static/images/map/cache_and_origin.svg +++ b/src/static/images/map/cache_and_origin.svg @@ -1 +1,33 @@ - \ No newline at end of file + + + + + + + + + + + + diff --git a/src/static/images/map/origin.svg b/src/static/images/map/origin.svg index 5a004be6b..65d8c5f61 100644 --- a/src/static/images/map/origin.svg +++ b/src/static/images/map/origin.svg @@ -1 +1,25 @@ - \ No newline at end of file + + + + + + + + + + + diff --git a/src/static/images/map/star_blue.svg b/src/static/images/map/star_blue.svg index bca3ba077..37d58749c 100644 --- a/src/static/images/map/star_blue.svg +++ b/src/static/images/map/star_blue.svg @@ -1 +1,18 @@ - \ No newline at end of file + + + + + + + + + + diff --git a/src/static/images/map/star_green.svg b/src/static/images/map/star_green.svg index 124e65bf4..f2de76f18 100644 --- a/src/static/images/map/star_green.svg +++ b/src/static/images/map/star_green.svg @@ -1 +1,18 @@ - \ No newline at end of file + + + + + + + + + + diff --git a/src/static/images/map/star_purple.svg b/src/static/images/map/star_purple.svg index b288c433d..2cb608345 100644 --- a/src/static/images/map/star_purple.svg +++ b/src/static/images/map/star_purple.svg @@ -1 +1,18 @@ - \ No newline at end of file + + + + + + + + + + diff --git a/src/static/images/map/star_red.svg b/src/static/images/map/star_red.svg index 7fe165742..77cf10e9e 100644 --- a/src/static/images/map/star_red.svg +++ b/src/static/images/map/star_red.svg @@ -1 +1,22 @@ - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/src/static/js/jquery-1.8.1.min.js b/src/static/js/jquery-1.8.1.min.js deleted file mode 100644 index e7f2a292b..000000000 --- a/src/static/js/jquery-1.8.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v@1.8.1 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0),h[l]&&j.push(k);j.length&&t.push({elem:f,matches:j})}n.length>o&&t.push({elem:this,matches:n.slice(o)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function $(a,b,c,d){c=c||[],b=b||q;var e,f,g,j,k=b.nodeType;if(k!==1&&k!==9)return[];if(!a||typeof a!="string")return c;g=h(b);if(!g&&!d)if(e=L.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&i(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return u.apply(c,t.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&X&&b.getElementsByClassName)return u.apply(c,t.call(b.getElementsByClassName(j),0)),c}return bk(a,b,c,d,g)}function _(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function ba(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bb(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bc(a,b,c,d){var e,g,h,i,j,k,l,m,n,p,r=!c&&b!==q,s=(r?"":"")+a.replace(H,"$1"),u=y[o][s];if(u)return d?0:t.call(u,0);j=a,k=[],m=0,n=f.preFilter,p=f.filter;while(j){if(!e||(g=I.exec(j)))g&&(j=j.slice(g[0].length),h.selector=l),k.push(h=[]),l="",r&&(j=" "+j);e=!1;if(g=J.exec(j))l+=g[0],j=j.slice(g[0].length),e=h.push({part:g.pop().replace(H," "),string:g[0],captures:g});for(i in p)(g=S[i].exec(j))&&(!n[i]||(g=n[i](g,b,c)))&&(l+=g[0],j=j.slice(g[0].length),e=h.push({part:i,string:g.shift(),captures:g}));if(!e)break}return l&&(h.selector=l),d?j.length:j?$.error(a):t.call(y(s,k),0)}function bd(a,b,e,f){var g=b.dir,h=s++;return a||(a=function(a){return a===e}),b.first?function(b){while(b=b[g])if(b.nodeType===1)return a(b)&&b}:f?function(b){while(b=b[g])if(b.nodeType===1&&a(b))return b}:function(b){var e,f=h+"."+c,i=f+"."+d;while(b=b[g])if(b.nodeType===1){if((e=b[o])===i)return b.sizset;if(typeof e=="string"&&e.indexOf(f)===0){if(b.sizset)return b}else{b[o]=i;if(a(b))return b.sizset=!0,b;b.sizset=!1}}}}function be(a,b){return a?function(c){var d=b(c);return d&&a(d===!0?c:d)}:b}function bf(a,b,c){var d,e,g=0;for(;d=a[g];g++)f.relative[d.part]?e=bd(e,f.relative[d.part],b,c):e=be(e,f.filter[d.part].apply(null,d.captures.concat(b,c)));return e}function bg(a){return function(b){var c,d=0;for(;c=a[d];d++)if(c(b))return!0;return!1}}function bh(a,b,c,d){var e=0,f=b.length;for(;e0?i(h,c,g):[]}function bj(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=0,t=a.length,v=S.POS,w=new RegExp("^"+v.source+"(?!"+A+")","i"),x=function(){var a=1,c=arguments.length-2;for(;al){g+=k.slice(l,n.index),l=p,q=[c],J.test(g)&&(m&&(q=m),m=e);if(r=O.test(g))g=g.slice(0,-5).replace(J,"$&*"),l++;n.length>1&&n[0].replace(w,x),m=bi(g,n[1],n[2],q,m,r)}g=""}}o||(g+=k),o=!1}g?J.test(g)?bh(g,m||[c],d,e):$(g,c,d,e?e.concat(m):m):u.apply(d,m)}return t===1?d:$.uniqueSort(d)}function bk(a,b,e,g,h){a=a.replace(H,"$1");var i,k,l,m,n,o,p,q,r,s,v=bc(a,b,h),w=b.nodeType;if(S.POS.test(a))return bj(v,b,e,g);if(g)i=t.call(g,0);else if(v.length===1){if((o=t.call(v[0],0)).length>2&&(p=o[0]).part==="ID"&&w===9&&!h&&f.relative[o[1].part]){b=f.find.ID(p.captures[0].replace(R,""),b,h)[0];if(!b)return e;a=a.slice(o.shift().string.length)}r=(v=N.exec(o[0].string))&&!v.index&&b.parentNode||b,q="";for(n=o.length-1;n>=0;n--){p=o[n],s=p.part,q=p.string+q;if(f.relative[s])break;if(f.order.test(s)){i=f.find[s](p.captures[0].replace(R,""),r,h);if(i==null)continue;a=a.slice(0,a.length-q.length)+q.replace(S[s],""),a||u.apply(e,t.call(i,0));break}}}if(a){k=j(a,b,h),c=k.dirruns++,i==null&&(i=f.find.TAG("*",N.test(a)&&b.parentNode||b));for(n=0;m=i[n];n++)d=k.runs++,k(m)&&e.push(m)}return e}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=a.document,r=q.documentElement,s=0,t=[].slice,u=[].push,v=function(a,b){return a[o]=b||!0,a},w=function(){var a={},b=[];return v(function(c,d){return b.push(c)>f.cacheLength&&delete a[b.shift()],a[c]=d},a)},x=w(),y=w(),z=w(),A="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",C=B.replace("w","w#"),D="([*^$|!~]?=)",E="\\["+A+"*("+B+")"+A+"*(?:"+D+A+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)"+A+"*\\]",F=":("+B+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+E+")|[^:]|\\\\.)*|.*))\\)|)",G=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",H=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),I=new RegExp("^"+A+"*,"+A+"*"),J=new RegExp("^"+A+"*([\\x20\\t\\r\\n\\f>+~])"+A+"*"),K=new RegExp(F),L=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,M=/^:not/,N=/[\x20\t\r\n\f]*[+~]/,O=/:not\($/,P=/h\d/i,Q=/input|select|textarea|button/i,R=/\\(?!\\)/g,S={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),NAME:new RegExp("^\\[name=['\"]?("+B+")['\"]?\\]"),TAG:new RegExp("^("+B.replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),POS:new RegExp(G,"ig"),needsContext:new RegExp("^"+A+"*[>+~]|"+G,"i")},T=function(a){var b=q.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},U=T(function(a){return a.appendChild(q.createComment("")),!a.getElementsByTagName("*").length}),V=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),W=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),X=T(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),Y=T(function(a){a.id=o+0,a.innerHTML="
",r.insertBefore(a,r.firstChild);var b=q.getElementsByName&&q.getElementsByName(o).length===2+q.getElementsByName(o+0).length;return e=!q.getElementById(o),r.removeChild(a),b});try{t.call(r.childNodes,0)[0].nodeType}catch(Z){t=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}$.matches=function(a,b){return $(a,null,null,b)},$.matchesSelector=function(a,b){return $(b,null,null,[a]).length>0},g=$.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=g(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=g(b);return c},h=$.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},i=$.contains=r.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:r.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},$.attr=function(a,b){var c,d=h(a);return d||(b=b.toLowerCase()),f.attrHandle[b]?f.attrHandle[b](a):W||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},f=$.selectors={cacheLength:50,createPseudo:v,match:S,order:new RegExp("ID|TAG"+(Y?"|NAME":"")+(X?"|CLASS":"")),attrHandle:V?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:e?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:U?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(R,""),a[3]=(a[4]||a[5]||"").replace(R,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||$.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&$.error(a[0]),a},PSEUDO:function(a,b,c){var d,e;if(S.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(d=a[4])K.test(d)&&(e=bc(d,b,c,!0))&&(e=d.indexOf(")",d.length-e)-d.length)&&(d=d.slice(0,e),a[0]=a[0].slice(0,e)),a[2]=d;return a.slice(0,3)}},filter:{ID:e?function(a){return a=a.replace(R,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(R,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(R,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=x[o][a];return b||(b=x(a,new RegExp("(^|"+A+")"+a+"("+A+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=$.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return $.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=s++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[o]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[o]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e,g=f.pseudos[a]||f.pseudos[a.toLowerCase()];return g||$.error("unsupported pseudo: "+a),g[o]?g(b,c,d):g.length>1?(e=[a,a,"",b],function(a){return g(a,0,e)}):g}},pseudos:{not:v(function(a,b,c){var d=j(a.replace(H,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!f.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:v(function(a){return function(b){return(b.textContent||b.innerText||g(b)).indexOf(a)>-1}}),has:v(function(a){return function(b){return $(a,b).length>0}}),header:function(a){return P.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:_("radio"),checkbox:_("checkbox"),file:_("file"),password:_("password"),image:_("image"),submit:ba("submit"),reset:ba("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return Q.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e",a.querySelectorAll("[selected]").length||e.push("\\["+A+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+A+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bk=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return u.apply(f,t.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j,k,l,m=d.getAttribute("id"),n=m||o,p=N.test(a)&&d.parentNode||d;m?n=n.replace(c,"\\$&"):d.setAttribute("id",n),j=bc(a,d,h),n="[id='"+n+"']";for(k=0,l=j.length;k0})}(),f.setFilters.nth=f.setFilters.eq,f.filters=f.pseudos,$.attr=p.attr,p.find=$,p.expr=$.selectors,p.expr[":"]=p.expr.pseudos,p.unique=$.uniqueSort,p.text=$.getText,p.isXMLDoc=$.isXML,p.contains=$.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{cj=f.href}catch(cy){cj=e.createElement("a"),cj.href="",cj=cj.href}ck=ct.exec(cj.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:cj,isLocal:cn.test(ck[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,ck[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==ck[1]&&i[2]==ck[2]&&(i[3]||(i[1]==="http:"?80:443))==(ck[3]||(ck[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cQ.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/src/templates/base.html.j2 b/src/templates/base.html.j2 index 48783053a..547f5ecfc 100644 --- a/src/templates/base.html.j2 +++ b/src/templates/base.html.j2 @@ -19,9 +19,10 @@

{{ self.title() }}{% if config.INSTANCE_NAME %} ({{ config.INSTANCE_NAME }}){% endif %}

{% block content %}{% endblock %} {% if want_js -%} - + diff --git a/src/templates/contacts.html.j2 b/src/templates/contacts.html.j2 index 3009c5b7b..821f58baa 100644 --- a/src/templates/contacts.html.j2 +++ b/src/templates/contacts.html.j2 @@ -12,7 +12,7 @@ OSG Contacts {% endif %}
@@ -34,7 +34,7 @@ OSG Contacts {{ user.Profile|replace("\n", "
") }}
{%- else -%} - (no profile) + (no profile) {%- endif %}

@@ -44,7 +44,7 @@ OSG Contacts {% if user.GitHub -%} {{ user.GitHub }} {%- else -%} - (none) + (none) {%- endif %} diff --git a/src/templates/generate_downtime_form.html.j2 b/src/templates/generate_downtime_form.html.j2 index f17595692..eab50c536 100644 --- a/src/templates/generate_downtime_form.html.j2 +++ b/src/templates/generate_downtime_form.html.j2 @@ -51,10 +51,8 @@ Resource Downtime YAML Generator {%- endif %}
- + {{ form.csrf_token }} + {{ M.render_field(form.facility) }} {{ M.render_button(form.change_facility) }} diff --git a/src/templates/generate_project_yaml.html.j2 b/src/templates/generate_project_yaml.html.j2 new file mode 100644 index 000000000..f6f6fcc7c --- /dev/null +++ b/src/templates/generate_project_yaml.html.j2 @@ -0,0 +1,168 @@ +{% set want_js = true %} +{% extends "base.html.j2" %} +{% import "formmacros.html.j2" as M %} + +{% macro render_dtfield(field) %} +{{ M.render_field(field, disabled=dtopts_disabled, **kwargs) }} +{% endmacro %} + +{% macro render_dtbutton(button) %} +{{ M.render_button(button, disabled=dtopts_disabled, **kwargs) }} +{% endmacro %} + +{% set downtime_fieldnames = [ + "scheduled", "description", "severity", "start_date", "start_time", + "end_date", "end_time", "services", "generate"] %} + +{% block title -%} +Project YAML Generator +{%- endblock %} + +{% block content %} +{% if infos %} + +{% endif %} + +
+
+ +
+

+ This form generates YAML code that can be added into + OSG's topology repository + to add a new project. +

+

+ If your institution is in the list please do not change the project name from the generated value. +

+ + {{ form.csrf_token }} +
+
+ {{ M.render_field(form.pi_first_name) }} +
+
+ {{ M.render_field(form.pi_last_name) }} +
+
+ {{ M.render_field(form.pi_institution, list="institutions") }} + + {% for institute in institutions %} + + {{ M.render_field(form.project_name) }} + {{ M.render_field(form.pi_department_or_organization) }} + {{ M.render_field(form.field_of_science) }} + {{ M.render_field(form.description) }} +
+
+ {{ M.render_button(form.auto_submit) }} +
+
+ {{ M.render_button(form.manual_submit) }} +
+
+ +

* denotes a required field

+
+ {% if form_complete %} +
+ {{ M.render_field(form.yaml_output) }} +
+

+ To complete this process you must: +

+
    +
  1. Navigate to the new file Github Page
  2. +
  3. Enter {{ form.project_name.data }}.yaml as the file name
  4. +
  5. Enter the yaml above as the file contents
  6. +
  7. Scroll to bottom and create a new PR
  8. +
+
+
+ {% endif %} +
+
+{% if pr_url %} + + +{% endif %} +{% if error %} + +{% endif %} +{% endblock %} + +{% block last %} + + {% if pr_url %} + + {% endif %} + {% if error %} + + {% endif %} +{% endblock %} diff --git a/src/templates/generate_resource_group_downtime_form.html.j2 b/src/templates/generate_resource_group_downtime_form.html.j2 index 1b6aaff25..5207d972e 100644 --- a/src/templates/generate_resource_group_downtime_form.html.j2 +++ b/src/templates/generate_resource_group_downtime_form.html.j2 @@ -57,10 +57,8 @@ Resource Group Downtime YAML Generator {%- endif %}
- + {{ form.csrf_token }} + {{ M.render_field(form.facility) }} {{ M.render_button(form.change_facility) }} diff --git a/src/templates/homepage.html.j2 b/src/templates/homepage.html.j2 index cc21acf19..d85bea1fe 100644 --- a/src/templates/homepage.html.j2 +++ b/src/templates/homepage.html.j2 @@ -11,6 +11,7 @@ OSG Topology Interface

Human-readable pages

    +
  • Generate a projects topology file
  • Generate a downtime entry for a resource
  • Generate a downtime entry for a resource group
  • List of OSG contacts
  • diff --git a/src/templates/iframe.html.j2 b/src/templates/iframe.html.j2 index 7c9dcddb7..799686703 100644 --- a/src/templates/iframe.html.j2 +++ b/src/templates/iframe.html.j2 @@ -28,14 +28,14 @@ will want to adjust the Map.data which populates the select input and legend. #map { height: 100vh; width: 100vw; } #full-screen { - padding: 8px; - position: absolute; - left: 10px; - bottom: 10px; - z-index: 1000; - border-radius: 5px; - border: #3a3a3a solid 1px; - } + padding: 6px 6px 4px 6px; + position: absolute; + left: 10px; + bottom: 10px; + z-index: 1000; + border-radius: 5px; + border: #3a3a3a solid 1px; + } #full-screen > img { height: 24px; @@ -51,15 +51,45 @@ will want to adjust the Map.data which populates the select input and legend. z-index: 1000; } + #selection-container[hidden] { + display: none; + } + #legend { position: absolute; - background-color: white; - padding: 8px; + background-color: #f7f7f7f5; + padding: 2px 6px 0px 6px; bottom: 20px; - right: 10px; + right: 4px; z-index: 1000; border-radius: 5px; - border: #3a3a3a solid 1px; + font-size: 12px; + box-shadow: 3px 3px 6px black; + } + + .legend-header { + margin:0; + font-size: 1rem; + } + + .label-container { + display: flex; + flex-direction: column; + padding-left: .2rem; + } + + .label-node { + font-size: 14px; + } + + .legend-image-container { + display:flex; + } + + .legend-image-container > img { + margin: auto; + height: 28px; + width: 21px; } .select-container { @@ -67,18 +97,25 @@ will want to adjust the Map.data which populates the select input and legend. border: #3a3a3a solid 1px; background: white; margin-left: auto; - margin-bottom: 5px; + } + + .resource-container.compute { + background-color: #c5deea; + } + + .resource-container.storage { + background-color: #dfcce0; } .select-container > label { background: white; - padding-left: 8px; + padding-left: 6px; font-size: 1rem; color: #3a3a3a; } .select-container > select { - padding: 8px; + padding: 4px 6px; font-size: 1rem; border: 0; } @@ -90,21 +127,25 @@ will want to adjust the Map.data which populates the select input and legend. .entry-container { display: flex; - margin-top: 10px; + margin-bottom: 4px; } - .entry-container > img { - height: 36px; - width: 27px; + #legend > hr { + margin: 0 0 .3rem 0; } .entry-container > span { - font-size: 1rem; + font-size: .9rem; margin: auto 0; - padding-left: 10px; + padding-left: 6px; } - .card-header { + .site-card-header { + margin: 0; + } + + .facility-card-header { + color: #717070; margin: 0; } @@ -138,12 +179,16 @@ will want to adjust the Map.data which populates the select input and legend. position: absolute; top: 10px; left: 55px; - padding: 6px; + padding: 4px 6px; font-size: 1rem; border-radius: 5px; border: #3a3a3a solid 1px; z-index: 1000; } + + #site { + max-width: 300px; + } @@ -151,8 +196,6 @@ will want to adjust the Map.data which populates the select input and legend. @@ -177,7 +220,9 @@ will want to adjust the Map.data which populates the select input and legend. const compute_services = new Set(["CE", "Submit Node", "Connect", "GUMS Server", "Glidein factory", "VOMS Server", "Execution Endpoint"]); const storage_services = new Set(["Squid", "SRMv2", "XRootD cache server", "GridFtp", "XRootD component", "XRootD origin server", "SRMv1", "LFC", "Apache Server", "FTS"]); const network_services = new Set(["net.perfSONAR.Bandwidth", "net.perfSONAR.Latency"]); - const ospool_facilities = new Set(['American Museum of Natural History', 'Arizona State University', 'Brookhaven National Laboratory', 'California Institute of Technology', 'Cinvestav', 'Clarkson University', 'Clemson University', 'Cybera', 'Fermi National Accelerator Laboratory', 'Florida State University', 'Georgia Institute of Technology', 'Georgia State University', 'Great Plains Network', 'IN2P3', 'INFN-T1', 'Illinois Institute of Technology', 'Indiana University', 'Kansas State University', 'Lancium', 'Lehigh University', 'Louisiana State University', 'Louisiana State University Health Sciences Center', 'New Mexico State University', 'Nikhef', 'North Dakota State University', 'Old Dominion University', 'Purdue University', 'Rice University', 'SURFsara', 'Southern Illinois University Edwardsville', 'Syracuse University', 'The College of New Jersey', 'Tufts University', 'Universidade Estadual Paulista', 'University of California San Diego', 'University of Chicago', 'University of Colorado', 'University of Connecticut', 'University of Illinois at Urbana Champaign', 'University of Michigan', 'University of Mississippi', 'University of Nebraska', 'University of Notre Dame', 'University of Oklahoma', 'University of Puerto Rico - Mayaguez', 'University of South Florida', 'University of Southern California', 'University of Tennessee Chattanooga', 'University of Texas at Austin', 'University of Utah', 'University of Wisconsin', 'Villanova University', 'Wayne State University', 'West Texas A&M University']) + const ospool_resources = new Set([ + "SU-ITS-CE3", "Expanse-PATH-EP", "SU-ITS-CE2", "Lancium-PEP", "UNL-PATH-EP", "UConn-HPC", "SDSC-PRP-OSPool-Provisioner", "IU-Jetstream2-Backfill", "Lancium-Backfill", "WISC-PATH-EP", "GPGrid", "MWT2", "GLOW", "Purdue-Geddes", "Lehigh - Hawk", "UW-IT", "NWICG_NDCMS", "UColorado_HEP", "TACC-Jetstream-Backfill", "UConn-OSG", "GPN-GP-ARGO-Backfill", "AMNH-Mendel-CE1", "BNL-ATLAS", "TCNJ-ELSA", "CUmulus-Backfill", "AMNH-HEL-CE1", "Rice-RAPID-Backfill", "OSG_US_FSU_HNPGRID", "GP-ARGO-wichita-backfill", "SDSC-PRP-CE1", "UA-HPC-CE1", "VU-AUGIE", "SIUE-CC-production", "GP-ARGO-dsu-backfill", "SLATE_US_NMSU_DISCOVERY", "UC-Denver-CE1", "UTC-Epyc", "Crane", "AGLT2", "GP-ARGO-uams-backfill", "SYRA-PATH-EP", "GP-ARGO-oru-backfill", "USCMS-FNAL-WC1", "GP-ARGO-sdsmt-backfill", "GP-ARGO-sdsu-backfill", "GP-ARGO-astate-backfill", "GP-ARGO-usd-backfill", "Georgia_Tech_PACE_CE_2", "GP-ARGO-ksu-backfill", "GP-ARGO-emporia-backfill", "Rhodes-HPC-CE1", "Swan-CE1", "GP-ARGO-langston-backfill", "GP-ARGO-uark-backfill", "GP-ARGO-creighton-backfill", "ODU-Ubuntu", "LSUHSC-Tigerfish-CE1", "WTAMU_HPC", "ASU-DELL_M420", "GP-ARGO-mst-backfill", "GP-ARGO-ku-backfill", "uprm-cms", "WSU-GRID", "USC-CARC-Artemis-Backfill", "FANDM-ITS", "Clarkson-ACRES-CE2", "NMSU-Discovery-CE1", "LC-ITS", "Rhino", "UA-LR-ITS-EP", "PDX-Coeus-CE1", "GP-ARGO-osu-backfill", "Nebraska", "cinvestav", "ISI", "Purdue-Anvil-Composable", "GP-ARGO-kanren-backfill", "GSU-ACIDS", "Clemson-Palmetto", "LSUHSC-Tigerfish-CE2", "AMNH-ARES-CE1", "GP-ARGO-doane-backfill", "LSU-DB-CE1", "CHTC", "CHTC-canary2", "NMSU-Discovery", "KSU-Beocat-CE1", "WSU-GRID-CE1", "GP-ARGO-cameron-backfill", "SPRACE", "ND_CAMLGPU", "CYBERA_EDMONTON", "UMissHEP", "USF", "Maine-ACG", "Clarkson-ACRES", "FIU-PATH-BACKFILL", "GP-ARGO-semo-backfill", "AMNH-ARES", "FIU-IRCC", "Alabama-CHPC-CE1", "TIGER-OSG-BACKFILL-PROD", "CIT_CMS_T2", "UCR-HPCC-CE1", "Tufts-Cluster", "Purdue-Anvil-CE1", "IIT_CE2", "IIT_CE1", "CHTC-GPU-EP", "Maine-ACG-CE1", "NCSU-HPC-CE1", "SLATE_US_UUTAH_LONEPEAK", "USC-CARC-Carina-Backfill", "SLATE_US_UUTAH_NOTCHPEAK", "ISI_ImageTest", "SLATE_US_UUTAH_KINGSPEAK", "Wilson Facility" + ].map(x => x.toLowerCase())) const iconConfig = { iconSize: [36,36], @@ -204,10 +249,14 @@ will want to adjust the Map.data which populates the select input and legend. shadowSize: [24,24] }) + let shownOspoolContributors = new Set() + downloadPNG = async () => { document.getElementsByClassName("leaflet-control-zoom")[0].hidden = true + // You have to run it twice - https://github.com/tsayen/dom-to-image/issues/343 let dataUrl = await domtoimage.toPng(document.getElementById("print-region")) + dataUrl = await domtoimage.toPng(document.getElementById("print-region")) let link = document.createElement('a'); link.download = 'OSG_Map.png'; @@ -221,6 +270,51 @@ will want to adjust the Map.data which populates the select input and legend. document.getElementById("main").requestFullscreen() } + class Resource { + constructor({Active, Description, Disable, FQDN, ID, IsCCStar, Name, Services, Tags, ResourceGroupName, ...props}) { + this.active = Active; + this.description = Description; + this.disable = Disable; + this.FQDN = FQDN; + this.id = ID; + this.isCCStar = IsCCStar; + this.name = Name; + this.services = Services?.Service; + this.tags = Tags; + this.resourceGroupName = ResourceGroupName; + this.isEDU = this.calcIsEDU(); + this.isCompute = this.calcIsCompute(); + this.isStorage = this.calcIsStorage() + this.isNetwork = this.calcIsNetwork(); + this.isOSDFCache = this.calcIsOSDFCache(); + this.isOSDFOrigin = this.calcIsOSDFOrigin(); + } + + calcIsEDU () { + return this.FQDN.endsWith(".edu") + } + + calcIsCompute () { + return this.services.some(({Name: name}) => compute_services.has(name)) + } + + calcIsStorage () { + return this.services.some(({Name: name}) => storage_services.has(name)) + } + + calcIsNetwork () { + return this.services.some(({Name: name}) => network_services.has(name)) + } + + calcIsOSDFCache () { + return this.services.some(({Name: name}) => name === "XRootD cache server") + } + + calcIsOSDFOrigin () { + return this.services.some(({Name: name}) => name === "XRootD origin server") + } + } + class Site { constructor({ @@ -229,21 +323,25 @@ will want to adjust the Map.data which populates the select input and legend. Facility: { Name: facilityName }, GroupName: resourceGroupName }) { + this.resources = {} this.resourceGroups = {} - this.resourceGroups[resourceGroupName] = resources - this.resources = resources this.latitude = Latitude this.longitude = Longitude - this.name = name + this.name = siteName this.facilityName = facilityName this.siteName = siteName + this.addResourceGroup({ Resources: { Resource : resources }, GroupName: resourceGroupName }) } addResourceGroup({ Resources: { Resource : resources }, GroupName: resourceGroupName }) { + resources = resources.map(x => new Resource({...x, ResourceGroupName: resourceGroupName})) this.resourceGroups[resourceGroupName] = resources + for(let resource of resources){ + this.resources[resource.name] = resource + } } getMarker(view) { @@ -292,7 +390,7 @@ will want to adjust the Map.data which populates the select input and legend. return null } - this.marker = L.marker([this.latitude, this.longitude], {icon: icon}).bindPopup(this.displayHTML); + this.marker = L.marker([this.latitude, this.longitude], {icon: icon}).bindPopup(this.getDisplayHTML(view)); this.marker.site = this this.popup = this.marker.getPopup() @@ -303,38 +401,59 @@ will want to adjust the Map.data which populates the select input and legend. get services() { if( !this._services ){ - this._services = this.resources.flatMap( resource => resource?.Services?.Service ? resource?.Services?.Service : [] ) + this._services = Object.values(this.resources).flatMap( resource => resource?.Services?.Service ? resource?.Services?.Service : [] ) } return this._services } - get displayHTML() { + getDisplayHTML(view) { let container = document.createElement("div") container.classList.add("popup") - let header = document.createElement("h4") - header.textContent = this.facilityName - header.classList.add("card-header") - container.appendChild(header) + let header_site = document.createElement("h4") + header_site.textContent = this.siteName + header_site.classList.add("site-card-header") + container.appendChild(header_site) + + let header_facility = document.createElement("h5") + header_facility.textContent = this.facilityName + header_facility.classList.add("facility-card-header") + container.appendChild(header_facility) container.appendChild(document.createElement("hr")) for(const [resourceGroupName, resourceGroupResources] of Object.entries(this.resourceGroups)){ + + // Check if the rg has any resources to show + if(!resourceGroupResources.some(x => this.showResourceInView(x,view))){ + continue; + } + let resourceGroupNode = document.createElement("h4") resourceGroupNode.innerText = "Resource Group: " + resourceGroupName resourceGroupNode.classList.add("resource-group-header") container.appendChild(resourceGroupNode) for(const resource of resourceGroupResources){ + + // Check if the rg has any resources to show + if(!this.showResourceInView(resource,view)){ + continue; + } + let resourceContainerNode = document.createElement("div") resourceContainerNode.classList.add("resource-container") + if(view === "ComputevsStorage"){ + resourceContainerNode.classList.add(resource.isCompute ? "compute" : "storage") + } + let imgNode = document.createElement("img") imgNode.src = "/static/images/map/server_simple.svg" imgNode.alt = "Image of Server" let resourceNode = document.createElement("span") - resourceNode.innerText = resource?.Name + resourceNode.innerText = resource?.name resourceNode.classList.add("resource-header") resourceContainerNode.appendChild(imgNode) @@ -347,61 +466,71 @@ will want to adjust the Map.data which populates the select input and legend. return container } - get isCCStar() { - if( !this._isCCStar ){ - this._isCCStar = this.resources.flatMap( resource => resource?.Tags?.Tag ? resource?.Tags?.Tag : [] ) - .some(tags => tags.includes("CC*")) + showResourceInView(resource, view){ + if(view === "ComputevsStorage"){ + return resource.isStorage || resource.isCompute + } else if(view === "CCStar"){ + return resource.isCCStar + } else if(view === "OpenScienceDataFederation") { + return resource.isOSDFCache || resource.isOSDFOrigin + } else if(view === "OSPool"){ + return this.resourceIsInOSPool(resource) } - return this._isCCStar + + return true; + } + + + get isCCStar() { + return Object.values(this.resources).some(x => x.isCCStar) } get isEDU() { - if( !this._isEDU ){ - this._isEDU = this.resources.some(({FQDN}) => FQDN.endsWith(".edu")) - } - return this._isEDU + return Object.values(this.resources).some(x => x.isEDU) } get isCompute() { - if( !this._isCompute ){ - this._isCompute = this.services.some(({Name: name}) => compute_services.has(name)) - } - return this._isCompute + return Object.values(this.resources).some(x => x.isCompute) } get isStorage() { - if( !this._isStorage ){ - this._isStorage = this.services.some(({Name: name}) => storage_services.has(name)) - } - return this._isStorage + return Object.values(this.resources).some(x => x.isStorage) } get isNetwork() { - if (!this._isNetwork) { - this._isNetwork = this.services.some(({Name: name}) => network_services.has(name)) - } - return this._isNetwork + return Object.values(this.resources).some(x => x.isNetwork) } get isOSDFCache() { - if( !this._isOSDFCache ){ - this._isOSDFCache = this.services.some(({Name: name}) => name === "XRootD cache server") - } - return this._isOSDFCache + return Object.values(this.resources).some(x => x.isOSDFCache) } get isOSDFOrigin(){ - if( !this._isOSDFOrigin ){ - this._isOSDFOrigin = this.services.some(({Name: name}) => name === "XRootD origin server") - } - return this._isOSDFOrigin + return Object.values(this.resources).some(x => x.isOSDFOrigin) } - get isOSPool(){ - if( !this._isOSPool ){ - this._isOSPool = ospool_facilities.has(this.facilityName ) + get isOSPool () { + if(Object.values(this.resources).some(x => this.resourceIsInOSPool(x))){ + shownOspoolContributors.add(this.name) + console.log(shownOspoolContributors) } - return this._isOSPool + return Object.values(this.resources).some(x => this.resourceIsInOSPool(x)) + } + + resourceIsInOSPool (resource) { + // If this resource is in the ospool_resources list + return ospool_resources.has(resource.name.toLowerCase()) || + + // If this resourceGroup is in the list, and no resources are named that groupname + ( + !(resource.resourceGroupName in this.resources) && + ospool_resources.has(resource.resourceGroupName.toLowerCase()) + + // If this resources Site name is in the list, and no resources have this Site name + ) || ( + !(this.siteName in this.resources) && + ospool_resources.has(this.siteName.toLowerCase()) + ) } } @@ -426,7 +555,7 @@ will want to adjust the Map.data which populates the select input and legend. L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', { attribution: 'Map data © OpenStreetMap contributors, Imagery © Mapbox', maxZoom: 18, - id: 'mapbox/streets-v11', + id: 'mapbox/satellite-streets-v12', tileSize: 512, zoomOffset: -1, accessToken: 'pk.eyJ1IjoidGFraW5nZHJha2UiLCJhIjoiY2wya3IyZGNvMDFyOTNsbnhyZjBteHRycSJ9.g6tRaqN8_iJxHgAQKNP6Tw' @@ -449,12 +578,26 @@ will want to adjust the Map.data which populates the select input and legend. entryContainerNode.classList.add("entry-container") this.legendItemsNode.appendChild(entryContainerNode) + let imgContainer = document.createElement("div") + imgContainer.classList.add("legend-image-container") + let imgNode = document.createElement("img") + imgContainer.appendChild(imgNode) + + let labelContainer = document.createElement("div") + labelContainer.classList.add("label-container") + let labelNode = document.createElement("span") + labelNode.classList.add("label-node") + let countNode = document.createElement("span") - entryContainerNode.appendChild(imgNode) - entryContainerNode.appendChild(labelNode) - entryContainerNode.appendChild(countNode) + countNode.classList.add("count-node") + + entryContainerNode.appendChild(imgContainer) + labelContainer.append(labelNode) + labelContainer.appendChild(countNode) + entryContainerNode.appendChild(labelContainer) + imgNode.src = iconUrl imgNode.alt = "Icon for " + iconLabel @@ -472,7 +615,15 @@ will want to adjust the Map.data which populates the select input and legend. } }, 0) - countNode.innerText = `( ${siteCount} )` + let institutionCount = Object.values(layer._layers) + .reduce((og, v) => { + if(v.options.icon.options.iconUrl === iconUrl){ + og.push(v?.site?.facilityName) + } + return og + }, []) + + countNode.innerText = `${siteCount} Sites, ${new Set(institutionCount).size} Institutions` }) this.legendNode.hidden = false @@ -519,7 +670,6 @@ will want to adjust the Map.data which populates the select input and legend. class SitemapPage { constructor() { - this.fetchSites() this.metaData = { "OSGSites" : { @@ -568,6 +718,11 @@ will want to adjust the Map.data which populates the select input and legend. this.leafletMap = new Map() this.leafletMap.map.on("popupopen", (e) => { this.siteSelect.value = e.popup.site.siteName + + // Default is opening '#close' which breaks url paramaters + for(let x of document.getElementsByClassName("leaflet-popup-close-button")){ + x.setAttribute("href", "javascript:void(0)") + } }) this.viewSelect = new Select("view") @@ -576,7 +731,9 @@ will want to adjust the Map.data which populates the select input and legend. ) this.viewSelect.node.value = this.view this.viewSelect.node.addEventListener("change", () => { - history.pushState({"data": "data"}, "", "/map/iframe?view=" + this.viewSelect.node.value) + let url = new URL(location) + url.searchParams.set("view", this.viewSelect.node.value) + history.pushState({}, "", url) this.update() }) @@ -585,7 +742,18 @@ will want to adjust the Map.data which populates the select input and legend. this.sites[this.siteSelect.node.value].marker.openPopup() }) + const url = new URL(location) + let navigation = url.searchParams.get("navigation") + if(navigation == 0){ + document.getElementById("selection-container").hidden = true + document.getElementById("print-button").hidden = true + document.getElementById("full-screen").hidden = true + document.getElementsByClassName("leaflet-top")[0].hidden = true + } + this.layers = {} + + this.fetchSites() } get view() { @@ -606,7 +774,9 @@ will want to adjust the Map.data which populates the select input and legend. update() { this.siteSelect.addOptions( - Object.values(this.layer._layers).map(({ site })=> [site.siteName, site.siteName]) + Object.values(this.layer._layers) + .map(({ site })=> [site.siteName, `${site.facilityName} - ${site.siteName}`]) + .sort((a, b) => a[1].localeCompare(b[1])) ) this.leafletMap.update(this.layer, this.metaData[this.view].legend) } @@ -615,8 +785,18 @@ will want to adjust the Map.data which populates the select input and legend. let response = await fetch("/api/resource_group_summary") let resourceGroupJson = await response.json() + // Filter out inactive resources and resource groups with only inactive resources + let activeResourceGroupJson = Object.entries(resourceGroupJson).reduce((o, [k,rg]) => { + let activeResources = rg["Resources"]["Resource"].filter(x => x['Active']) + if(activeResources.length && rg['Production']){ + rg["Resources"]["Resource"] = activeResources + o[k] = rg + } + return o + }, {}) + let sites = {} - Object.entries(resourceGroupJson).forEach(([key, value]) => { + Object.entries(activeResourceGroupJson).forEach(([key, value]) => { if(value?.Site?.Name in sites){ sites[value?.Site?.Name].addResourceGroup(value) } else { diff --git a/src/tests/cache_config_whitelist.txt b/src/tests/cache_config_whitelist.txt new file mode 100644 index 000000000..507a314e0 --- /dev/null +++ b/src/tests/cache_config_whitelist.txt @@ -0,0 +1,4 @@ +# one item per line FQDN:port +xrootd-local.unl.edu:1094 +stash.farm.particle.cz:8000 +stashcache.jinr.ru:8000 diff --git a/src/tests/diff_cache_configs.py b/src/tests/diff_cache_configs.py new file mode 100755 index 000000000..9a224c5da --- /dev/null +++ b/src/tests/diff_cache_configs.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 + +import re +import os +import sys +import json +import collections +import urllib.request +from subprocess import Popen, PIPE + +CVMFS_EXTERNAL_URL = "CVMFS_EXTERNAL_URL" + +baseurl = "https://raw.githubusercontent.com/cvmfs-contrib/config-repo/master" +ligoconf = "etc/cvmfs/config.d/ligo.osgstorage.org.conf" +osgconf = "etc/cvmfs/domain.d/osgstorage.org.conf" +whitelist = "cache_config_whitelist.txt" + +namespaces = "https://topology.opensciencegrid.org/stashcache/namespaces.json" + + +def slurp_file(path): + path = "%s/%s" % (os.path.dirname(__file__), path) + return open(path, "rb").read() + +def slurp_url(url): + remote = url if "://" in url else "%s/%s" % (baseurl, url) + return urllib.request.urlopen(remote).read() + + +def shell_parse_env(srctxt, env): + # evaluate shell source text and print the value of env var + env = env.encode() + # only eval lines that contain the env var we are interested in + grepped = b"\n".join( line for line in srctxt.splitlines() if env in line ) + sh_code = 'eval "$1"; echo "${!2}"' + cmdline = ["/bin/bash", "-c", sh_code, "-", grepped, env] + sh_eval = Popen(cmdline, stdout=PIPE).communicate()[0] or b'' + return sh_eval.decode() + + +def get_conf_urls(confurl): + txt = slurp_url(confurl) + return shell_parse_env(txt, CVMFS_EXTERNAL_URL).strip().split(";") + + +URLInfo = collections.namedtuple("URLInfo", ["proto", "hostport", "path"]) + +def split_url_components(url): + # "https://xrootd-local.unl.edu:1094//user/ligo/" -> + # ("https://", "xrootd-local.unl.edu:1094", "/user/ligo") + m = re.match(r'^(https?://)([^/]*)/?(/.*)', url) + return URLInfo(*m.groups()) if m else URLInfo(None, None, None) + + +def get_conf_url_infos(confurl): + urls = get_conf_urls(confurl) + return list(map(split_url_components, urls)) + + +def get_conf_url_path_map(confurl): + urlinfos = get_conf_url_infos(confurl) + dd = collections.defaultdict(set) + for info in urlinfos: + dd[info.path].add(info.hostport) + return dd + + +def cache_endpoints(caches, endpoint): + endpoints = set() + for cache in caches: + endpoints.add(cache[endpoint]) + return endpoints + + +def get_namespaces_map(): + txt = slurp_url(namespaces) + d = json.loads(txt) + return { + ns['path']: { + 'auth_endpoint': cache_endpoints(ns['caches'], 'auth_endpoint'), + 'endpoint': cache_endpoints(ns['caches'], 'endpoint') + } for ns in d['namespaces'] + } + + +def get_whitelisted(): + wl = slurp_file(whitelist).decode() + return set( l for l in wl.splitlines() if not l.startswith("#") ) + + +def do_conf_comparisons(): + nsmap = get_namespaces_map() + osgmap = get_conf_url_path_map(osgconf) + ligomap = get_conf_url_path_map(ligoconf) + whitelisted = get_whitelisted() + + osg_cvmfs_caches = osgmap['/'] + osg_topology_caches = nsmap['/osgconnect/public']['endpoint'] + + ligo_cvmfs_caches = ligomap['/user/ligo/'] + ligo_topology_caches = nsmap['/user/ligo']['auth_endpoint'] + + print_diffs(osgconf, osg_cvmfs_caches, osg_topology_caches, whitelisted) + print_diffs(ligoconf, ligo_cvmfs_caches, ligo_topology_caches, whitelisted) + + return (osg_cvmfs_caches - whitelisted == osg_topology_caches and + ligo_cvmfs_caches - whitelisted == ligo_topology_caches) + + +def print_diffs(conf, cvmfs_caches, topology_caches, whitelisted): + conf = os.path.basename(conf) + if cvmfs_caches - whitelisted == topology_caches: + print("%s is up to date with topology source" % conf) + print("") + else: + cvmfs_missing = topology_caches - cvmfs_caches + cvmfs_extra = cvmfs_caches - topology_caches - whitelisted + + if cvmfs_missing: + print("Caches in Topology, missing from CVMFS config %s" % conf) + print_bulletted(cvmfs_missing) + print("") + if cvmfs_extra: + print("Caches in CVMFS config %s, missing from Topology" % conf) + print_bulletted(cvmfs_extra) + print("") + + +def print_bulletted(items): + for item in sorted(items): + print(" - %s" % item) + + +def main(): + return do_conf_comparisons() + + +if __name__ == '__main__': + all_match = main() + sys.exit(0 if all_match else 1) + + diff --git a/src/tests/test_api.py b/src/tests/test_api.py index b99d32111..c4aa1c743 100644 --- a/src/tests/test_api.py +++ b/src/tests/test_api.py @@ -1,15 +1,23 @@ import re import flask import pytest +import urllib.parse from pytest_mock import MockerFixture # Rewrites the path so the app can be imported like it normally is import os import sys +import csv +import io + topdir = os.path.join(os.path.dirname(__file__), "..") sys.path.append(topdir) -from app import app +os.environ['TESTING'] = "True" + +from app import app, global_data +from webapp.topology import Facility, Site, Resource, ResourceGroup +from webapp.data_federation import CredentialGeneration HOST_PORT_RE = re.compile(r"[a-zA-Z0-9.-]{3,63}:[0-9]{2,5}") PROTOCOL_HOST_PORT_RE = re.compile(r"[a-z]+://" + HOST_PORT_RE.pattern) @@ -31,6 +39,8 @@ '/miscproject/xml', '/miscproject/json', '/miscresource/json', + '/miscsite/json', + '/miscfacility/json', '/vosummary/xml', '/rgsummary/xml', '/rgdowntime/xml', @@ -48,7 +58,10 @@ "/origin/Authfile", "/origin/Authfile-public", "/origin/scitokens.conf", - "/cache/scitokens.conf" + "/cache/scitokens.conf", + "/api/institutions", + "/cache/grid-mapfile", + "/origin/grid-mapfile" ] @@ -73,7 +86,6 @@ def test_cache_authfile(self, client: flask.Flask, mocker: MockerFixture): mocker.patch("webapp.ldap_data.get_ligo_ldap_dn_list", mocker.MagicMock(return_value=["deadbeef.0"])) resources = client.get('/miscresource/json').json for resource in resources.values(): - resource_fqdn = resource["FQDN"] previous_endpoint = client.get(f"/stashcache/authfile?cache_fqdn={resource_fqdn}") current_endpoint = client.get(f"/cache/Authfile?fqdn={resource_fqdn}") @@ -84,7 +96,6 @@ def test_cache_authfile(self, client: flask.Flask, mocker: MockerFixture): def test_cache_authfile_public(self, client: flask.Flask): resources = client.get('/miscresource/json').json for resource in resources.values(): - resource_fqdn = resource["FQDN"] current_endpoint = client.get(f"/cache/Authfile-public?fqdn={resource_fqdn}") previous_endpoint = client.get(f"/stashcache/authfile-public?cache_fqdn={resource_fqdn}") @@ -95,7 +106,6 @@ def test_cache_authfile_public(self, client: flask.Flask): def test_origin_authfile(self, client: flask.Flask): resources = client.get('/miscresource/json').json for resource in resources.values(): - resource_fqdn = resource["FQDN"] current_endpoint = client.get(f"/origin/Authfile?fqdn={resource_fqdn}") previous_endpoint = client.get(f"/stashcache/origin-authfile?fqdn={resource_fqdn}") @@ -106,7 +116,6 @@ def test_origin_authfile(self, client: flask.Flask): def test_origin_authfile_public(self, client: flask.Flask): resources = client.get('/miscresource/json').json for resource in resources.values(): - resource_fqdn = resource["FQDN"] current_endpoint = client.get(f"/origin/Authfile-public?fqdn={resource_fqdn}") previous_endpoint = client.get(f"/stashcache/origin-authfile-public?fqdn={resource_fqdn}") @@ -117,7 +126,6 @@ def test_origin_authfile_public(self, client: flask.Flask): def test_cache_scitokens(self, client: flask.Flask): resources = client.get('/miscresource/json').json for resource in resources.values(): - resource_fqdn = resource["FQDN"] previous_endpoint = client.get(f"/stashcache/scitokens?cache_fqdn={resource_fqdn}") current_endpoint = client.get(f"/cache/scitokens.conf?fqdn={resource_fqdn}") @@ -128,7 +136,6 @@ def test_cache_scitokens(self, client: flask.Flask): def test_origin_scitokens(self, client: flask.Flask): resources = client.get('/miscresource/json').json for resource in resources.values(): - resource_fqdn = resource["FQDN"] previous_endpoint = client.get(f"/stashcache/scitokens?origin_fqdn={resource_fqdn}") current_endpoint = client.get(f"/origin/scitokens.conf?fqdn={resource_fqdn}") @@ -164,12 +171,12 @@ def test_stashcache_file(key, endpoint, fqdn, resource_stashcache_files): assert len(resources_stashcache_files) > 20 keys_and_endpoints = [ - ("CacheAuthfilePublic", "/cache/Authfile-public"), - ("CacheAuthfile", "/cache/Authfile"), - ("CacheScitokens", "/cache/scitokens.conf"), + ("CacheAuthfilePublic", "/cache/Authfile-public"), + ("CacheAuthfile", "/cache/Authfile"), + ("CacheScitokens", "/cache/scitokens.conf"), ("OriginAuthfilePublic", "/origin/Authfile-public"), - ("OriginAuthfile", "/origin/Authfile"), - ("OriginScitokens", "/origin/scitokens.conf") + ("OriginAuthfile", "/origin/Authfile"), + ("OriginScitokens", "/origin/scitokens.conf") ] for resource_name, resource_stashcache_files in resources_stashcache_files.items(): @@ -195,6 +202,19 @@ def validate_namespace_schema(ns): assert isinstance(ns["usetokenonread"], bool) assert ns["dirlisthost"] is None or PROTOCOL_HOST_PORT_RE.match(ns["dirlisthost"]) assert ns["writebackhost"] is None or PROTOCOL_HOST_PORT_RE.match(ns["writebackhost"]) + credgen = ns["credential_generation"] + if credgen is not None: + assert isinstance(credgen["max_scope_depth"], int) and credgen["max_scope_depth"] > -1 + assert credgen["strategy"] in CredentialGeneration.STRATEGIES + assert credgen["issuer"] + parsed_issuer = urllib.parse.urlparse(credgen["issuer"]) + assert parsed_issuer.netloc and parsed_issuer.scheme == "https" + if credgen["vault_server"]: + assert isinstance(credgen["vault_server"], str) + if credgen["vault_issuer"]: + assert isinstance(credgen["vault_issuer"], str) + if credgen["base_path"]: + assert isinstance(credgen["base_path"], str) response = client.get('/stashcache/namespaces') assert response.status_code == 200 @@ -212,11 +232,663 @@ def validate_namespace_schema(ns): # Have a reasonable number of namespaces assert len(namespaces) > 15 + found_credgen = False for namespace in namespaces: + if namespace["credential_generation"] is not None: + found_credgen = True validate_namespace_schema(namespace) if namespace["caches"]: for cache in namespace["caches"]: validate_cache_schema(cache) + assert found_credgen, "At least one namespace with credential_generation" + + + def test_institution_accept_type(self, client: flask.Flask): + """Checks both formats output the same content""" + + json_institutions = client.get("/api/institutions", headers={"Accept": "application/json"}).json + json_tuples = [tuple(map(str, x)) for x in sorted(json_institutions, key=lambda x: x[0])] + + csv_institutions = csv.reader(io.StringIO(client.get("/api/institutions").data.decode())) + csv_tuples = [tuple(x) for x in sorted(csv_institutions, key=lambda x: x[0])] + + assert len(csv_tuples) == len(json_tuples) + + assert tuple(json_tuples) == tuple(csv_tuples) + + + def test_origin_grid_mapfile(self, client: flask.Flask): + TEST_ORIGIN = "origin-auth2001.chtc.wisc.edu" # This origin serves protected data + response = client.get("/origin/grid-mapfile") + assert response.status_code == 400 # fqdn not specified + + # Compare the hashes in an origin's grid-mapfile with the hashes in the origin's Authfile + + # First get a set of the hashes in the grid-mapfile + response = client.get(f"/origin/grid-mapfile?fqdn={TEST_ORIGIN}") + assert response.status_code == 200 + grid_mapfile_text = response.data.decode("utf-8") + grid_mapfile_lines = grid_mapfile_text.split("\n") + # Have a reasonable number of mappings + assert len(grid_mapfile_lines) > 20 + + mapfile_matches = filter(None, + (re.fullmatch(r'"[^"]+" ([0-9a-f]+[.]0)', line) + for line in grid_mapfile_lines)) + mapfile_hashes = set(match.group(1) for match in mapfile_matches) + + # Next get a set of the user (u) hashes in the authfile + response = client.get(f"/origin/Authfile?fqdn={TEST_ORIGIN}") + assert response.status_code == 200 + authfile_text = response.data.decode("utf-8") + authfile_lines = authfile_text.split("\n") + # Have a reasonable number of caches; each one has a comment with the DN so there should be + # twice as many lines as authorizations + assert len(authfile_lines) > 40 + + authfile_matches = filter(None, + (re.match(r'u ([0-9a-f]+[.]0)', line) + for line in authfile_lines)) + authfile_hashes = set(match.group(1) for match in authfile_matches) + + hashes_not_in_mapfile = authfile_hashes - mapfile_hashes + assert not hashes_not_in_mapfile, f"Hashes in authfile but not in mapfile: {hashes_not_in_mapfile}" + + hashes_not_in_authfile = mapfile_hashes - authfile_hashes + assert not hashes_not_in_authfile, f"Hashes in mapfile but not in authfile: {hashes_not_in_authfile}" + + def test_cache_grid_mapfile(self, client: flask.Flask): + TEST_CACHE = "stash-cache.osg.chtc.io" # This cache allows cert-based auth but not LIGO data + response = client.get("/cache/grid-mapfile") + assert response.status_code == 400 # fqdn not specified + + # Compare the hashes in a cache's grid-mapfile with the hashes in the cache's Authfile + + # First get a set of the hashes in the grid-mapfile + response = client.get(f"/cache/grid-mapfile?fqdn={TEST_CACHE}") + assert response.status_code == 200 + grid_mapfile_text = response.data.decode("utf-8") + grid_mapfile_lines = grid_mapfile_text.split("\n") + # Make sure we have some mappings (we may not have LIGO data so there's only a few) + assert len(grid_mapfile_lines) > 1 + + mapfile_matches = filter(None, + (re.fullmatch(r'"[^"]+" ([0-9a-f]+[.]0)', line) + for line in grid_mapfile_lines)) + mapfile_hashes = set(match.group(1) for match in mapfile_matches) + + # Next get a set of the user (u) hashes in the authfile + response = client.get(f"/cache/Authfile?fqdn={TEST_CACHE}") + assert response.status_code == 200 + authfile_text = response.data.decode("utf-8") + authfile_lines = authfile_text.split("\n") + # Make sure we have some mappings; each one has a comment with the DN so there should be + # twice as many lines as authorizations + assert len(authfile_lines) > 2 + + authfile_matches = filter(None, + (re.match(r'u ([0-9a-f]+[.]0)', line) + for line in authfile_lines)) + authfile_hashes = set(match.group(1) for match in authfile_matches) + + hashes_not_in_mapfile = authfile_hashes - mapfile_hashes + assert not hashes_not_in_mapfile, f"Hashes in authfile but not in mapfile: {hashes_not_in_mapfile}" + + hashes_not_in_authfile = mapfile_hashes - authfile_hashes + assert not hashes_not_in_authfile, f"Hashes in mapfile but not in authfile: {hashes_not_in_authfile}" + + +class TestEndpointContent: + # Pre-build some test cases based on AMNH resources + mock_facility = Facility("test_facility_name", 12345) + + mock_site_info = { + "AddressLine1": "Central Park West at 79th St.", + "City": "New York", + "Country": "United States", + "Description": "The American Museum of Natural History is one of the world's preeminent scientific and cultural institutions.", + "Latitude": 40.7128, + "LongName": "American Museum of Natural History", + "Longitude": -74.006, + "State": "NY", + "Zipcode": "10024-5192" + } + mock_site = Site("test_site_name", 1234, mock_facility, mock_site_info) + + mock_resource_group_info = { + 'Production': True, + 'SupportCenter': 'Self Supported', + 'GroupDescription': 'American Museum of Natural History Slurm cluster for the CC* proposal (NSF 19-533)', + 'GroupID': 497, + 'Resources': { + 'OSG_US_AMNH_ARES': { + 'Active': False, + 'Description': 'This is a Hosted CE for the AMNH Slurm cluster', + 'ID': 985, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'hosted-ce22.grid.uchicago.edu', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-ARES': { + 'Active': True, + 'Description': 'This is a Hosted CE for the AMNH Slurm cluster', + 'ID': 1074, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'hosted-ce22.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-ARES-CE1': { + 'Active': True, + 'Description': 'This is a Hosted CE for the AMNH Slurm cluster', + 'ID': 1216, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'amnh-ares-ce1.svc.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE' + } + }, + 'Tags': ['CC*'] + }, + 'OSG_US_AMNH_HEL': { + 'Active': False, + 'Description': 'Second Hosted CE for the AMNH', + 'ID': 1052, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'hosted-ce36.grid.uchicago.edu', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE for HEL cluster' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-HEL': { + 'Active': True, + 'Description': 'Second Hosted CE for the AMNH', + 'ID': 1075, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Jeffrey Peterson', + 'ID': '3ef2e11c271234a34f154e75b28d3b4554bb8f63' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Jeffrey Peterson', + 'ID': '3ef2e11c271234a34f154e75b28d3b4554bb8f63' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'hosted-ce36.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE for HEL cluster' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-HEL-CE1': { + 'Active': True, + 'Description': 'Second Hosted CE for the AMNH', + 'ID': 1217, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Jeffrey Peterson', + 'ID': '3ef2e11c271234a34f154e75b28d3b4554bb8f63' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Jeffrey Peterson', + 'ID': '3ef2e11c271234a34f154e75b28d3b4554bb8f63' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'amnh-hel-ce1.svc.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE for HEL cluster' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-Mendel': { + 'Active': False, + 'Description': 'Third Hosted CE for the AMNH', + 'ID': 1111, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'hosted-ce39.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE for Mendel cluster' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-Mendel-CE1': { + 'Active': True, + 'Description': 'Third Hosted CE for the AMNH', + 'ID': 1221, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Marco Mascheroni', + 'ID': '030408ab932e143859b5f97a2d1c9e30ba2a9f0d' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Site Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'amnh-mendel-ce1.svc.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'American Museum of Natural History Hosted CE for Mendel cluster' + } + }, + 'Tags': ['CC*'] + }, + 'AMNH-Huxley-AP1': { + 'Active': True, + 'Description': 'OS Pool access point', + 'ID': 1210, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'huxley-osgsub-001.sdmz.amnh.org', + 'Services': { + 'Submit Node': { + 'Description': 'OS Pool access point' + } + }, + 'Tags': ['CC*', 'OSPool'] + }, + 'AMNH-Mendel-AP1': { + 'Active': True, + 'Description': 'OS Pool access point', + 'ID': 1261, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Sajesh Singh', + 'ID': '0da9ca0b7d1d58f1a91c6797e4bb29b64846f88e' + }, + 'Secondary': { + 'Name': 'AMNH OSG Contact List', + 'ID': 'e7b8d36d684570dcb0ed8ff7b723928d5a93b513' + } + } + }, + 'FQDN': 'mendel-osgsub-001.sdmz.amnh.org', + 'Services': { + 'Submit Node': { + 'Description': 'OS Pool access point' + } + }, + 'Tags': ['CC*', 'OSPool'] + } + } + } + mock_resource_group = ResourceGroup("test_resource_group", mock_resource_group_info, mock_site, global_data.get_topology().common_data) + + mock_resource_information = { + 'Active': False, + 'Description': 'Hosted CE for FANDM-ITS', + 'ID': 1296, + 'ContactLists': { + 'Administrative Contact': { + 'Primary': { + 'Name': 'Jeffrey Peterson', + 'ID': '3ef2e11c271234a34f154e75b28d3b4554bb8f63' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + }, + 'Security Contact': { + 'Primary': { + 'Name': 'Jeffrey Peterson', + 'ID': '3ef2e11c271234a34f154e75b28d3b4554bb8f63' + }, + 'Secondary': { + 'Name': 'Jeffrey Michael Dost', + 'ID': '3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba' + } + } + }, + 'FQDN': 'fandm-its-ce1.svc.opensciencegrid.org', + 'Services': { + 'CE': { + 'Description': 'FANDM-ITS CE1 hosted CE' + } + }, + 'Tags': ['CC*'] + } + mock_resource = Resource("AMNH-ARES", mock_resource_information, global_data.get_topology().common_data) + + mock_facility.add_site(mock_site) + mock_site.add_resource_group(mock_resource_group) + + def test_resource_defaults(self, client: flask.Flask): + resources = client.get('/miscresource/json').json + + # Check that it is not empty + assert len(resources) > 0 + + # Check that the resource contains the default keys + assert set(resources.popitem()[1]).issuperset(["ID", "Name", "Active", "Disable", "Services", "Tags", + "Description", "FQDN", "FQDNAliases", "VOOwnership", + "WLCGInformation", "ContactLists", "IsCCStar"]) + + def test_site_defaults(self, client: flask.Flask): + sites = client.get('/miscsite/json').json + + # Check that it is not empty + assert len(sites) > 0 + + # Check that the site contains the appropriate keys + assert set(sites.popitem()[1]).issuperset(["ID", "Name", "IsCCStar"]) + + def test_facility_defaults(self, client: flask.Flask): + facilities = client.get('/miscfacility/json').json + + # Check that it is not empty + assert len(facilities) > 0 + + # Check that the site contains the appropriate keys + assert set(facilities.popitem()[1]).issuperset(["ID", "Name", "IsCCStar"]) + + def test_institution_default(self, client: flask.Flask): + institutions = client.get("/api/institutions", headers={"Accept": "application/json"}).json + + assert len(institutions) > 0 + + # Check facilities exist and have the "have resources" bit flipped + assert [i for i in institutions if i[0] == "JINR"][0][1] + assert [i for i in institutions if i[0] == "Universidade de São Paulo - Laboratório de Computação Científica Avançada"][0][1] + + # Project Organizations exist and have "has project" bit flipped + assert [i for i in institutions if i[0] == "Iolani School"][0][2] + assert [i for i in institutions if i[0] == "University of California, San Diego"][0][2] + + # Both + assert [i for i in institutions if i[0] == "Harvard University"][0][1] and [i for i in institutions if i[0] == "Harvard University"][0][2] + + # Check Project only doesn't have resource bit + assert [i for i in institutions if i[0] == "National Research Council of Canada"][0][1] is False + + # Facility Tests + facilities = set(global_data.get_topology().facilities.keys()) + + # Check all facilities exist + assert set(i[0] for i in institutions).issuperset(facilities) + + # Check all facilities have their facilities bit flipped + assert all(x[1] for x in institutions if x[0] in institutions) + + # Project Tests + projects = set(x['Organization'] for x in global_data.get_projects()['Projects']['Project']) + + # Check all projects exist + assert set(i[0] for i in institutions).issuperset(projects) + + # Check all projects have the project bit flipped + assert all(x[2] for x in institutions if x[0] in projects) if __name__ == '__main__': diff --git a/src/tests/test_stashcache.py b/src/tests/test_stashcache.py index 6033cc52e..d7924d7fe 100644 --- a/src/tests/test_stashcache.py +++ b/src/tests/test_stashcache.py @@ -1,16 +1,42 @@ import flask import pytest +import re from pytest_mock import MockerFixture # Rewrites the path so the app can be imported like it normally is import os import sys + topdir = os.path.join(os.path.dirname(__file__), "..") sys.path.append(topdir) +os.environ['TESTING'] = "True" + from app import app, global_data import stashcache +GRID_MAPPING_REGEX = re.compile(r'^"(/[^"]*CN=[^"]+")\s+([0-9a-f]{8}[.]0)$') +# ^^ the DN starts with a slash and will at least have a CN in it. +EMPTY_LINE_REGEX = re.compile(r'^\s*(#|$)') # Empty or comment-only lines +I2_TEST_CACHE = "osg-sunnyvale-stashcache.t2.ucsd.edu" +# ^^ one of the Internet2 caches; these serve both public and LIGO data + + +# Some DNs I can use for testing and the hashes they map to. +# All of these were generated with osg-ca-generator on alma8 +# openssl x509 -in /etc/grid-security/hostcert.pem -noout -subject -nameopt compat +# I got the hashes from a previous run of the test. +MOCK_DNS_AND_HASHES = { + "/DC=org/DC=opensciencegrid/C=US/O=OSG Software/OU=Services/CN=testhost1": "f7d78bab.0", + "/DC=org/DC=opensciencegrid/C=US/O=OSG Software/OU=Services/CN=testhost2": "941f0a37.0", + "/DC=org/DC=opensciencegrid/C=US/O=OSG Software/OU=Services/CN=testhost3": "77934f6c.0", + "/DC=org/DC=opensciencegrid/C=US/O=OSG Software/OU=Services/CN=testhost4": "def5b9bc.0", + "/DC=org/DC=opensciencegrid/C=US/O=OSG Software/OU=Services/CN=testhost5": "83a7951b.0", +} + +MOCK_DN_LIST = list(MOCK_DNS_AND_HASHES.keys()) + + @pytest.fixture def client(): with app.test_client() as client: @@ -22,14 +48,14 @@ class TestStashcache: def test_allowedVO_includes_ANY_for_ligo_inclusion(self, client: flask.Flask, mocker: MockerFixture): spy = mocker.spy(global_data, "get_ligo_dn_list") - stashcache.generate_cache_authfile(global_data, "hcc-stash.unl.edu") + stashcache.generate_cache_authfile(global_data, "osg-sunnyvale-stashcache.t2.ucsd.edu") assert spy.call_count == 1 def test_allowedVO_includes_LIGO_for_ligo_inclusion(self, client: flask.Flask, mocker: MockerFixture): spy = mocker.spy(global_data, "get_ligo_dn_list") - stashcache.generate_cache_authfile(global_data, "stashcache.gravity.cf.ac.uk") + stashcache.generate_cache_authfile(global_data, "stashcache.gwave.ics.psu.edu") assert spy.call_count == 1 @@ -43,6 +69,58 @@ def test_allowedVO_excludes_LIGO_and_ANY_for_ligo_inclusion(self, client: flask. def test_None_fdqn_isnt_error(self, client: flask.Flask): stashcache.generate_cache_authfile(global_data, None) + def test_origin_grid_mapfile_nohost(self, client: flask.Flask): + text = stashcache.generate_origin_grid_mapfile(global_data, "", suppress_errors=False) + for line in text.split("\n"): + assert EMPTY_LINE_REGEX.match(line), f'Unexpected text "{line}".\nFull text:\n{text}\n' + + def test_origin_grid_mapfile_with_host(self, client: flask.Flask): + text = stashcache.generate_origin_grid_mapfile(global_data, "origin-auth2001.chtc.wisc.edu", + suppress_errors=False) + num_mappings = 0 + for line in text.split("\n"): + if EMPTY_LINE_REGEX.match(line): + continue + elif GRID_MAPPING_REGEX.match(line): + num_mappings += 1 + else: + assert False, f'Unexpected text "{line}".\nFull text:\n{text}\n' + assert num_mappings > 5, f"Too few mappings found.\nFull text:\n{text}\n" + + def test_cache_grid_mapfile_nohost(self, client: flask.Flask): + text = stashcache.generate_cache_grid_mapfile(global_data, "", legacy=False, suppress_errors=False) + + for line in text.split("\n"): + if EMPTY_LINE_REGEX.match(line): + continue + mm = GRID_MAPPING_REGEX.match(line) + if mm: + dn = mm.group(1) + if "CN=Brian Paul Bockelman" in dn or "CN=Matyas Selmeci A148276" in dn: + # HACK: these two have their FQANs explicitly allowed in some namespaces so it's OK + # for them to show up in grid-mapfiles even without an FQDN + continue + else: + assert False, f'Unexpected text "{line}".\nFull text:\n{text}\n' + else: + assert False, f'Unexpected text "{line}".\nFull text:\n{text}\n' + + def test_cache_grid_mapfile_i2_cache(self, client: flask.Flask, mocker: MockerFixture): + mocker.patch.object(global_data, "get_ligo_dn_list", return_value=MOCK_DN_LIST, autospec=True) + text = stashcache.generate_cache_grid_mapfile(global_data, + I2_TEST_CACHE, + legacy=True, + suppress_errors=False) + num_mappings = 0 + for line in text.split("\n"): + if EMPTY_LINE_REGEX.match(line): + continue + elif GRID_MAPPING_REGEX.match(line): + num_mappings += 1 + else: + assert False, f'Unexpected text "{line}".\nFull text:\n{text}\n' + assert num_mappings > 5, f"Too few mappings found.\nFull text:\n{text}\n" + if __name__ == '__main__': pytest.main() diff --git a/src/tests/test_verify_schema.sh b/src/tests/test_verify_schema.sh index 8bb90e0d5..3f90ecf45 100755 --- a/src/tests/test_verify_schema.sh +++ b/src/tests/test_verify_schema.sh @@ -11,7 +11,12 @@ function verify_xml { xml="$1" type="$2" echo "Validating $type XML schema..." - xmllint --noout --schema "$REPO_ROOT_DIR/src/schema/$type.xsd" $xml + ret=0 + xmllint_output=$(xmllint --noout --schema "$REPO_ROOT_DIR/src/schema/$type.xsd" "$xml") || ret=$? + if [[ $ret != 0 ]]; then + printf "%s\n" "FATAL: XML schema validation failed:" "$xmllint_output" + fi + return $ret } if [[ $GH_EVENT == 'push' && \ @@ -22,7 +27,9 @@ if [[ $GH_EVENT == 'push' && \ touch ~/.ssh/known_hosts chmod 0600 ~/.ssh/known_hosts cat >> ~/.ssh/known_hosts < 1: print_emsg_once('RGUnique') - print("Resource Group '%s' mentioned for multiple Sites:" % name) + print("ERROR: Resource Group '%s' mentioned for multiple Sites:" % name) for rgfile in rgflist: print(" - %s" % rgfile) errors += 1 @@ -241,7 +243,7 @@ def test_2_res_unique(rgs, rgfns): for r, rgflist in sorted(r2rg.items()): if len(rgflist) > 1: print_emsg_once('ResUnique') - print("Resource '%s' mentioned for multiple groups:" % r) + print("ERROR: Resource '%s' mentioned for multiple groups:" % r) for rgfile in rgflist: print(" - %s" % rgfile) errors += 1 @@ -262,14 +264,14 @@ def test_3_voownership(rgs, rgfns): total_vo_ownership = sumvals(rdict.get('VOOwnership')) if not 0 <= total_vo_ownership <= 100: print_emsg_once('VOOwnership100') - print("In '%s', Resource '%s' has total VOOwnership = %d%%" % + print("ERROR: In '%s', Resource '%s' has total VOOwnership = %d%%" % (rgfn, rname, total_vo_ownership)) errors += 1 if total_vo_ownership: for vo in rdict['VOOwnership']: if vo not in vo_names: print_emsg_once('UnknownVO') - print("In '%s', Resource '%s' has unknown VO '%s'" % + print("ERROR: In '%s', Resource '%s' has unknown VO '%s'" % (rgfn, rname, vo)) errors += 1 return errors @@ -288,12 +290,12 @@ def test_4_res_svcs(rgs, rgfns): rsvcs = rdict.get('Services') if not rsvcs: print_emsg_once('NoServices') - print("In '%s', Resource '%s' has no Services" % (rgfn, rname)) + print("ERROR: In '%s', Resource '%s' has no Services" % (rgfn, rname)) errors += 1 else: for svc in sorted(set(rsvcs) - set(services)): print_emsg_once('NoServices') - print("In '%s', Resource '%s' has unknown Service '%s'" % + print("ERROR: In '%s', Resource '%s' has unknown Service '%s'" % (rgfn, rname, svc)) errors += 1 return errors @@ -304,18 +306,18 @@ def test_5_sc(rgs, rgfns, support_centers): errors = 0 if support_centers is None: - print("File missing: 'topology/support-centers.yaml'") + print("ERROR: File missing: 'topology/support-centers.yaml'") return 1 for rg,rgfn in zip(rgs,rgfns): sc = rg.get('SupportCenter') if not sc: print_emsg_once('NoSupCenter') - print("Resource Group '%s' has no SupportCenter" % rgfn) + print("ERROR: Resource Group '%s' has no SupportCenter" % rgfn) errors += 1 elif sc not in support_centers: print_emsg_once('NoSupCenter') - print("Resource Group '%s' has unknown SupportCenter '%s'" % + print("ERROR: Resource Group '%s' has unknown SupportCenter '%s'" % (rgfn, sc)) errors += 1 @@ -335,7 +337,7 @@ def test_6_site(): for site, faclist in sorted(smap.items()): if len(faclist) > 1: print_emsg_once('SiteUnique') - print("Site '%s' mentioned for multiple Facilities:" % site) + print("ERROR: Site '%s' mentioned for multiple Facilities:" % site) for fac in faclist: print(" - %s" % fac) errors += 1 @@ -358,7 +360,7 @@ def test_7_fqdn_unique(rgs, rgfns): for fqdn, rgflist in sorted(n2rg.items()): if len(rgflist) > 1: print_emsg_once('FQDNUnique') - print("FQDN '%s' mentioned for multiple resources:" % fqdn) + print("ERROR: FQDN '%s' mentioned for multiple resources:" % fqdn) for rgfile,rname in rgflist: print(" - %s (%s)" % (rname,rgfile)) errors += 1 @@ -370,19 +372,41 @@ def test_8_res_ids(rgs, rgfns): # Check that resources/resource groups have a numeric ID/GroupID errors = 0 + ridres = autodict() + gidrgs = autodict() for rg,rgfn in zip(rgs,rgfns): if not isinstance(rg.get('GroupID'), int): print_emsg_once('ResGrpID') - print("Resource Group missing numeric GroupID: '%s'" % rgfn) + print("ERROR: Resource Group missing numeric GroupID: '%s'" % rgfn) errors += 1 + else: + gidrgs[rg['GroupID']] += [rgfn] for resname,res in sorted(rg['Resources'].items()): if not isinstance(res.get('ID'), int): print_emsg_once('ResID') - print("Resource '%s' missing numeric ID in '%s'" + print("ERROR: Resource '%s' missing numeric ID in '%s'" % (resname, rgfn)) errors += 1 + else: + ridres[res['ID']] += [(rgfn, resname)] + + for gid,rglist in sorted(gidrgs.items()): + if len(rglist) > 1: + print_emsg_once('ResGrpIDUnique') + print("ERROR: Resource Group ID '%s' used for multiple groups:" % gid) + for rgfn in rglist: + print(" - %s" % rgfn) + errors += 1 + + for rid,reslist in sorted(ridres.items()): + if len(reslist) > 1: + print_emsg_once('ResIDUnique') + print("ERROR: Resource ID '%s' used for multiple resources:" % rid) + for rgfn,resname in reslist: + print(" - %s: %s" % (rgfn, resname)) + errors += 1 return errors @@ -415,7 +439,7 @@ def test_9_res_contact_lists(rgs, rgfns): rcls = rdict.get('ContactLists') if not rcls: print_emsg_once('NoResourceContactLists') - print("In '%s', Resource '%s' has no ContactLists" + print("ERROR: In '%s', Resource '%s' has no ContactLists" % (rgfn, rname)) errors += 1 @@ -425,7 +449,7 @@ def test_9_res_contact_lists(rgs, rgfns): def test_10_res_admin_contact(rgs, rgfns): # verify resources have admin contact - errors = 0 + warnings = 0 for rg,rgfn in zip(rgs,rgfns): for rname,rdict in sorted(rg['Resources'].items()): @@ -434,17 +458,17 @@ def test_10_res_admin_contact(rgs, rgfns): ctype, etype = 'Administrative', 'NoAdminContact' if not rcls.get('%s Contact' % ctype): print_emsg_once(etype) - print("In '%s', Resource '%s' has no %s Contact" + print("WARNING: In '%s', Resource '%s' has no %s Contact" % (rgfn, rname, ctype)) - errors += 1 + warnings += 1 - return errors + return warnings def test_11_res_sec_contact(rgs, rgfns): # verify resources have security contact - errors = 0 + warnings = 0 for rg,rgfn in zip(rgs,rgfns): for rname,rdict in sorted(rg['Resources'].items()): @@ -453,11 +477,11 @@ def test_11_res_sec_contact(rgs, rgfns): ctype, etype = 'Security', 'NoSecContact' if not rcls.get('%s Contact' % ctype): print_emsg_once(etype) - print("In '%s', Resource '%s' has no %s Contact" + print("WARNING: In '%s', Resource '%s' has no %s Contact" % (rgfn, rname, ctype)) - errors += 1 + warnings += 1 - return errors + return warnings def test_12_res_contact_id_fmt(rgs, rgfns): @@ -472,7 +496,7 @@ def test_12_res_contact_id_fmt(rgs, rgfns): for ctype, clevel, ID, name in flatten_res_contacts(rcls): if not contact_id_ok(ID): print_emsg_once('MalformedContactID') - print("In '%s', Resource '%s' has malformed %s %s '%s'" + print("ERROR: In '%s', Resource '%s' has malformed %s %s '%s'" " (%s)" % (rgfn, rname, clevel, ctype, ID, name)) errors += 1 return errors @@ -489,7 +513,7 @@ def test_12_vo_contact_id_fmt(vos, vofns): for ctype, ID, name in flatten_vo_contacts(vcs): if not contact_id_ok(ID): print_emsg_once('MalformedContactID') - print("In '%s', malformed '%s' Contact ID '%s'" + print("ERROR: In '%s', malformed '%s' Contact ID '%s'" " (%s)" % (vofn, ctype, ID, name)) errors += 1 return errors @@ -508,7 +532,7 @@ def test_12_sc_contact_id_fmt(support_centers): for ctype, ID, name in flatten_sc_contacts(sccs): if not contact_id_ok(ID): print_emsg_once('MalformedContactID') - print("Support Center '%s' has malformed '%s'" + print("ERROR: Support Center '%s' has malformed '%s'" " Contact ID '%s' (%s)" % (scname, ctype, ID, name)) errors += 1 return errors @@ -526,7 +550,7 @@ def test_13_res_contacts_exist(rgs, rgfns, contacts): for ctype, clevel, ID, name in flatten_res_contacts(rcls): if contact_id_ok(ID) and ID not in contacts: print_emsg_once('UnknownContactID') - print("In '%s', Resource '%s' has unknown %s %s '%s'" + print("ERROR: In '%s', Resource '%s' has unknown %s %s '%s'" " (%s)" % (rgfn, rname, clevel, ctype, ID, name)) errors += 1 @@ -544,7 +568,7 @@ def test_13_vo_contacts_exist(vos, vofns, contacts): for ctype, ID, name in flatten_vo_contacts(vcs): if contact_id_ok(ID) and ID not in contacts: print_emsg_once('UnknownContactID') - print("In '%s', unknown '%s' Contact ID '%s'" + print("ERROR: In '%s', unknown '%s' Contact ID '%s'" " (%s)" % (vofn, ctype, ID, name)) errors += 1 @@ -564,7 +588,7 @@ def test_13_sc_contacts_exist(support_centers, contacts): for ctype, ID, name in flatten_sc_contacts(sccs): if contact_id_ok(ID) and ID not in contacts: print_emsg_once('UnknownContactID') - print("Support Center '%s' has unknown '%s'" + print("ERROR: Support Center '%s' has unknown '%s'" " Contact ID '%s' (%s)" % (scname, ctype, ID, name)) errors += 1 return errors @@ -584,7 +608,7 @@ def test_14_res_contacts_match(rgs, rgfns, contacts): and ID in contacts and name.lower() != contacts[ID].lower()): print_emsg_once('ContactNameMismatch') - print("In '%s', Resource '%s' %s %s '%s' (%s) does not" + print("ERROR: In '%s', Resource '%s' %s %s '%s' (%s) does not" " match name in contact repo (%s)" % (rgfn, rname, clevel, ctype, ID, name, contacts[ID])) errors += 1 @@ -605,7 +629,7 @@ def test_14_vo_contacts_match(vos, vofns, contacts): and ID in contacts and name.lower() != contacts[ID].lower()): print_emsg_once('ContactNameMismatch') - print("In '%s', '%s' Contact ID '%s' (%s) does not" + print("ERROR: In '%s', '%s' Contact ID '%s' (%s) does not" " match name in contact repo (%s)" % (vofn, ctype, ID, name, contacts[ID])) errors += 1 @@ -628,7 +652,7 @@ def test_14_sc_contacts_match(support_centers, contacts): and ID in contacts and name.lower() != contacts[ID].lower()): print_emsg_once('ContactNameMismatch') - print("Support Center '%s': '%s' Contact ID '%s' (%s)" + print("ERROR: Support Center '%s': '%s' Contact ID '%s' (%s)" " does not match name in contact repo (%s)" % (scname, ctype, ID, name, contacts[ID])) errors += 1 @@ -643,13 +667,13 @@ def test_15_facility_site_files(): for facdir in glob.glob("*/"): if not os.path.exists(facdir + "FACILITY.yaml"): print_emsg_once('NoFacility') - print(facdir[:-1] + " does not have required FACILITY.yaml file") + print("ERROR: " + facdir[:-1] + " does not have required FACILITY.yaml file") errors += 1 for sitedir in glob.glob("*/*/"): if not os.path.exists(sitedir + "SITE.yaml"): print_emsg_once('NoSite') - print(sitedir[:-1] + " does not have required SITE.yaml file") + print("ERROR: " + sitedir[:-1] + " does not have required SITE.yaml file") errors += 1 return errors @@ -662,9 +686,11 @@ def test_16_Xrootd_DNs(rgs, rgfns): for rg, rgfn in zip(rgs, rgfns): for rname, rdict in sorted(rg['Resources'].items()): - if 'XRootD cache server' in rdict['Services'] and rdict['Active'] and 'DN' not in rdict: + if ('XRootD cache server' in rdict.get('Services', {}) + and rdict.get('Active', True) + and not rdict.get('DN', "")): print_emsg_once('XrootdWithoutDN') - print("In '%s', Xrootd cache server Resource '%s' has no DN" % + print("ERROR: In '%s', Xrootd cache server Resource '%s' has no DN" % (rgfn, rname)) errors += 1 @@ -692,14 +718,14 @@ def test_17_osdf_data(rgs, rgfns): if any( svc in rsvcs for svc in services ): if not isinstance(rdict.get('AllowedVOs'), list): print_emsg_once('OSDFServiceVOsList') - print("In '%s', XRootD cache/origin server Resource '%s'" + print("ERROR: In '%s', XRootD cache/origin server Resource '%s'" " has no AllowedVOs list" % (rgfn, rname)) errors += 1 else: for name in rdict['AllowedVOs']: if name not in allowed_vo_names: print_emsg_once('UnknownVO') - print("In '%s', Resource '%s', AllowedVOs has" + print("ERROR: In '%s', Resource '%s', AllowedVOs has" " unknown VO name '%s'" % (rgfn, rname, name)) errors += 1 return errors @@ -738,7 +764,7 @@ def test_18_osdf_data_cache_warnings(rgs, rgfns, vomap): continue if rname not in all_allowed_caches: print_emsg_once('CacheNotAllowed') - print("In '%s', Resource '%s' is a Cache and" + print("WARNING: In '%s', Resource '%s' is a Cache and" " allows %s VO; but no VO allows this" " resource in AllowedCaches" % (rgfn, rname, voname)) @@ -748,7 +774,7 @@ def test_18_osdf_data_cache_warnings(rgs, rgfns, vomap): (rname in vo_allowed_caches[voname] or "ANY" in vo_allowed_caches[voname])): print_emsg_once('CacheNotAllowed') - print("In '%s', Resource '%s' is a Cache and lists" + print("WARNING: In '%s', Resource '%s' is a Cache and lists" " '%s' in AllowedVOs; but this VO does not list" " that resource in AllowedCaches" % (rgfn, rname, voname)) @@ -778,7 +804,7 @@ def test_19_osdf_data_origin_warnings(rgs, rgfns, vomap): if voname in ["ANY", "ANY_PUBLIC"]: if rname not in all_allowed_origins: print_emsg_once('OriginNotAllowed') - print("In '%s', Resource '%s' is an Origin and" + print("WARNING: In '%s', Resource '%s' is an Origin and" " allows %s VO; but no VO allows this" " resource in AllowedOrigins" % (rgfn, rname, voname)) @@ -788,7 +814,7 @@ def test_19_osdf_data_origin_warnings(rgs, rgfns, vomap): (rname in vo_allowed_origins[voname] or "ANY" in vo_allowed_origins[voname])): print_emsg_once('OriginNotAllowed') - print("In '%s', Resource '%s' is an Origin and lists" + print("WARNING: In '%s', Resource '%s' is an Origin and lists" " '%s' in AllowedVOs; but this VO does not list" " that resource in AllowedOrigins" % (rgfn, rname, voname)) @@ -817,7 +843,7 @@ def test_20_fqdn_unique_xrootd(rgs, rgfns): if any( svc in svcs for _,_,svcs in rgflist for svc in xrd_svcs ): print_emsg_once('FQDNUniqueXRootD') - print("Duplicate FQDN '%s' used for XRootD services:" % fqdn) + print("ERROR: Duplicate FQDN '%s' used for XRootD services:" % fqdn) for rgfn, rname, svcs in rgflist: print(" - %s (%s)" % (rname,rgfn)) diff --git a/src/tests/verify_site_names.sh b/src/tests/verify_site_names.sh index 783172e17..b4f014cab 100755 --- a/src/tests/verify_site_names.sh +++ b/src/tests/verify_site_names.sh @@ -11,11 +11,11 @@ sitenames_with_invalid_chars () { } if sitenames_with_invalid_chars -q; then - echo "Site names with invalid chars found:" + echo "ERROR: Site names with invalid chars found:" echo sitenames_with_invalid_chars | sed 's/^/ - /' echo - echo "Site names must match pattern: '^$allowed$'" + echo "ERROR: Site names must match pattern: '^$allowed$'" exit 1 else echo A-OK diff --git a/src/tests/verify_unique_downtime_ids.sh b/src/tests/verify_unique_downtime_ids.sh index 16e1b2640..8339c3073 100755 --- a/src/tests/verify_unique_downtime_ids.sh +++ b/src/tests/verify_unique_downtime_ids.sh @@ -7,7 +7,7 @@ dupes=$( grep -h '^ *ID:' */*/*_downtime.yaml | awk '{print $2}' | sort | if [[ $dupes ]]; then for d in $dupes; do - echo "Found duplicate downtime ID: $d in:" + echo "ERROR: Found duplicate downtime ID: $d in:" grep -n "^ *ID: *$d *$" */*/*_downtime.yaml | sed "s/^/- /" done exit 1 diff --git a/src/tests/verify_xml_downtimes.py b/src/tests/verify_xml_downtimes.py index 09d5340a8..58e4e572d 100755 --- a/src/tests/verify_xml_downtimes.py +++ b/src/tests/verify_xml_downtimes.py @@ -36,7 +36,7 @@ def validate_xml(xml_fname): if errors: print("%d time format error(s)" % len(errors)) for e in errors: - print("Invalid time format: '%s'" % e, file=sys.stderr) + print("ERROR: Invalid time format: '%s'" % e, file=sys.stderr) return 1 else: print("A-OK") diff --git a/src/topology_utils.py b/src/topology_utils.py index 8b9e003e6..28cc6da24 100644 --- a/src/topology_utils.py +++ b/src/topology_utils.py @@ -354,20 +354,20 @@ def filter_contacts(args, results): if getattr(args, 'name_filter', None): # filter out undesired names - for name in results.keys(): + for name in list(results): if not fnmatch.fnmatch(name, args.name_filter) and \ args.name_filter not in name: del results[name] elif getattr(args, 'fqdn_filter', None): # filter out undesired FQDNs - for fqdn in results.keys(): + for fqdn in list(results): if not fnmatch.fnmatch(fqdn, args.fqdn_filter) and \ args.fqdn_filter not in fqdn: del results[fqdn] if args.contact_type != 'all': # filter out undesired contact types - for name in list(results.keys()): + for name in list(results): contact_list = [] for contact in results[name]: contact_type = contact['ContactType'] @@ -379,7 +379,7 @@ def filter_contacts(args, results): results[name] = contact_list if getattr(args, 'contact_emails', None): - for name in results.keys(): + for name in list(results): contact_list = [contact for contact in results[name] if contact['Email'] in args.contact_emails] if not contact_list: del results[name] diff --git a/src/webapp/automerge_check.py b/src/webapp/automerge_check.py index 3ec9c1cc5..7cc9e491c 100755 --- a/src/webapp/automerge_check.py +++ b/src/webapp/automerge_check.py @@ -2,6 +2,7 @@ import collections import subprocess +import stat import yaml import sys import os @@ -195,15 +196,19 @@ def get_file_at_version(sha, fname): ret, out = runcmd(args, stderr=_devnull) return out -def list_dir_at_version(sha, path): +def list_files_at_version(sha, path): treeish = b'%s:%s' % (sha.encode(), path) - args = ['git', 'ls-tree', '-z', '--name-only', treeish] + args = ['git', 'ls-tree', '-z', treeish] ret, out = runcmd(args, stderr=_devnull) - return zsplit(out) + for line in zsplit(out): + mode, type_, hash_, fname = line.split(None, 3) + mode = int(mode, 8) # mode is in octal + if stat.S_ISREG(mode): # skip symlinks + yield fname def get_organizations_at_version(sha): projects = [ parse_yaml_at_version(sha, b"projects/" + fname, {}) - for fname in list_dir_at_version(sha, b"projects") + for fname in list_files_at_version(sha, b"projects") if re.search(br'.\.yaml$', fname) ] return set( p.get("Organization") for p in projects ) diff --git a/src/webapp/common.py b/src/webapp/common.py index 106312720..8e0ed8957 100644 --- a/src/webapp/common.py +++ b/src/webapp/common.py @@ -4,18 +4,18 @@ import json import os import re -import shlex import subprocess import sys from typing import Any, Dict, List, Union, AnyStr, NewType, TypeVar from functools import wraps -import asn1 - log = getLogger(__name__) import xmltodict import yaml +import csv +from io import StringIO + try: from yaml import CSafeLoader as SafeLoader except ImportError: @@ -56,6 +56,14 @@ def populate_voown_name(self, vo_id_to_name: Dict): self.voown_name = [vo_id_to_name.get(i, "") for i in self.voown_id] +def to_csv(data: list) -> str: + csv_string = StringIO() + writer = csv.writer(csv_string) + for row in data: + writer.writerow(row) + return csv_string.getvalue() + + def is_null(x, *keys) -> bool: for key in keys: if not key: continue @@ -73,7 +81,7 @@ def is_null(x, *keys) -> bool: ]) -def ensure_list(x: Union[None, T, List[T]]) -> List[T]: +def ensure_list(x: Union[None, List[T], T]) -> List[T]: if isinstance(x, list): return x elif x is None: @@ -104,7 +112,7 @@ def simplify_attr_list(data: Union[Dict, List], namekey: str, del_name: bool = T return new_data -def expand_attr_list_single(data: Dict, namekey:str, valuekey: str, name_first=True) -> List[OrderedDict]: +def expand_attr_list_single(data: Dict, namekey: str, valuekey: str, name_first=True) -> List[OrderedDict]: """ Expand {"name1": "val1", @@ -123,7 +131,8 @@ def expand_attr_list_single(data: Dict, namekey:str, valuekey: str, name_first=T return newdata -def expand_attr_list(data: Dict, namekey: str, ordering: Union[List, None]=None, ignore_missing=False) -> List[OrderedDict]: +def expand_attr_list(data: Dict, namekey: str, ordering: Union[List, None] = None, ignore_missing=False) -> List[ + OrderedDict]: """ Expand {"name1": {"attr1": "val1", ...}, @@ -266,6 +275,7 @@ def git_clone_or_pull(repo, dir, branch, ssh_key=None) -> bool: ok = ok and run_git_cmd(["checkout", branch], dir=dir) return ok + def git_clone_or_fetch_mirror(repo, git_dir, ssh_key=None) -> bool: if os.path.exists(git_dir): ok = run_git_cmd(["fetch", "origin"], git_dir=git_dir, ssh_key=ssh_key) @@ -273,7 +283,7 @@ def git_clone_or_fetch_mirror(repo, git_dir, ssh_key=None) -> bool: ok = run_git_cmd(["clone", "--mirror", repo, git_dir], ssh_key=ssh_key) # disable mirror push ok = ok and run_git_cmd(["config", "--unset", "remote.origin.mirror"], - git_dir=git_dir) + git_dir=git_dir) return ok @@ -318,17 +328,14 @@ def escape(pattern: str) -> str: unescaped_characters = ['!', '"', '%', "'", ',', '/', ':', ';', '<', '=', '>', '@', "`"] for unescaped_character in unescaped_characters: - escaped_string = re.sub(unescaped_character, f"\\{unescaped_character}", escaped_string) return escaped_string def support_cors(f): - @wraps(f) def wrapped(): - response = f() response.headers['Access-Control-Allow-Origin'] = '*' @@ -338,60 +345,14 @@ def wrapped(): return wrapped -__oid_map = { - "DC": "0.9.2342.19200300.100.1.25", - "OU": "2.5.4.11", - "CN": "2.5.4.3", - "O": "2.5.4.10", - "ST": "2.5.4.8", - "C": "2.5.4.6", - "L": "2.5.4.7", - "postalCode": "2.5.4.17", - "street": "2.5.4.9", - "emailAddress": "1.2.840.113549.1.9.1", - } - - -def generate_dn_hash(dn: str) -> str: - """ - Given a DN one-liner as commonly encoded in the grid world - (e.g., output of `openssl x509 -in $FILE -noout -subject`), run - the OpenSSL subject hash generation algorithm. - - This is done by calculating the SHA-1 sum of the canonical form of the - X509 certificate's subject. Formatting is a bit like this: - - SEQUENCE: - SET: - SEQUENCE: - OID - UTF8String - - All the UTF-8 values should be converted to lower-case and multiple - spaces should be replaced with a single space. That is, "Foo Bar" - should be substituted with "foo bar" for the canonical form. - """ - dn_split_re = re.compile("/([A-Za-z]+)=") - - encoder = asn1.Encoder() - encoder.start() - info = dn_split_re.split(dn)[1:] - for attr, val in zip(info[0::2], info[1::2]): - oid = __oid_map.get(attr) - if not oid: - raise ValueError("OID for attribute {} is not known.".format(attr)) - encoder.enter(0x11) - encoder.enter(0x10) - encoder.write(oid, 0x06) - encoder.write(val.lower().encode("utf-8"), 0x0c) - encoder.leave() - encoder.leave() - output = encoder.output() - hash_obj = hashlib.sha1() - hash_obj.update(output) - digest = hash_obj.digest() - int_summary = digest[0] | digest[1] << 8 | digest[2] << 16 | digest[3] << 24 - return "%08lx.0" % int_summary +def cache_control_private(f): + """Decorator to set `Cache-Control: private` on response""" + @wraps(f) + def wrapped(): + response = f() + response.cache_control.private = True + return response + return wrapped XROOTD_CACHE_SERVER = "XRootD cache server" diff --git a/src/webapp/data_federation.py b/src/webapp/data_federation.py new file mode 100644 index 000000000..06a700fe3 --- /dev/null +++ b/src/webapp/data_federation.py @@ -0,0 +1,399 @@ +import urllib +import urllib.parse +from collections import OrderedDict +from typing import Optional, List, Dict, Tuple, Union, Set + +from .common import XROOTD_CACHE_SERVER, XROOTD_ORIGIN_SERVER, ParsedYaml, is_null +try: + from .x509 import generate_dn_hash +except ImportError: # if asn1 is unavailable + generate_dn_hash = None + + +class AuthMethod: + is_public = False + used_in_authfile = False + used_in_scitokens_conf = False + used_in_grid_mapfile = False + + def get_authfile_id(self): + return "" + + def get_scitokens_conf_block(self, service_name: str): + return "" + + def get_grid_mapfile_line(self): + return "" + + +class NullAuth(AuthMethod): + pass + + +class PublicAuth(AuthMethod): + is_public = True + used_in_authfile = True + + def __str__(self): + return "PUBLIC" + + def get_authfile_id(self): + return "u *" + + +class DNAuth(AuthMethod): + used_in_authfile = True + used_in_grid_mapfile = True + + def __init__(self, dn: str): + self.dn = dn + + def __str__(self): + return "DN: " + self.dn + + def get_dn_hash(self): + return generate_dn_hash(self.dn) + + def get_authfile_id(self): + return f"u {self.get_dn_hash()}" + + def get_grid_mapfile_line(self): + return f'"{self.dn}" {self.get_dn_hash()}' + + +class FQANAuth(AuthMethod): + used_in_authfile = True + + def __init__(self, fqan: str): + self.fqan = fqan + + def __str__(self): + return "FQAN: " + self.fqan + + def get_authfile_id(self): + return f"g {self.fqan}" + + +class SciTokenAuth(AuthMethod): + used_in_scitokens_conf = True + + def __init__(self, issuer: str, base_path: str, restricted_path: Optional[str], map_subject: bool): + self.issuer = issuer + self.base_path = base_path + self.restricted_path = restricted_path + self.map_subject = map_subject + + def __str__(self): + return f"SciToken: issuer={self.issuer} base_path={self.base_path} restricted_path={self.restricted_path} " \ + f"map_subject={self.map_subject}" + + def get_scitokens_conf_block(self, service_name: str): + if service_name not in [XROOTD_CACHE_SERVER, XROOTD_ORIGIN_SERVER]: + raise ValueError(f"service_name must be '{XROOTD_CACHE_SERVER}' or '{XROOTD_ORIGIN_SERVER}'") + block = (f"[Issuer {self.issuer}]\n" + f"issuer = {self.issuer}\n" + f"base_path = {self.base_path}\n") + if self.restricted_path: + block += f"restricted_path = {self.restricted_path}\n" + if service_name == XROOTD_ORIGIN_SERVER: + block += f"map_subject = {self.map_subject}\n" + + return block + + +# TODO Use a dataclass (https://docs.python.org/3.9/library/dataclasses.html) +# once we can ditch Python 3.6; the webapp no longer supports 3.6 but some of +# the scripts (e.g. osg-scitokens-config) do. +class CredentialGeneration: + """Class for storing the info of a CredentialGeneration block for a namespace. + This is served up by the /osdf/namespaces endpoint. + See https://opensciencegrid.atlassian.net/browse/SOFTWARE-5381 for details. + + """ + STRATEGY_VAULT = "Vault" + STRATEGY_OAUTH2 = "OAuth2" + STRATEGIES = [STRATEGY_OAUTH2, STRATEGY_VAULT] + def __init__(self, strategy: str, issuer: str, max_scope_depth: Optional[int], vault_server: Optional[str], base_path: Optional[str], vault_issuer: Optional[str]): + self.strategy = strategy + self.issuer = issuer + self.max_scope_depth = max_scope_depth + self.vault_server = vault_server + self.base_path = base_path + self.vault_issuer = vault_issuer + + def __repr__(self): + return self.__class__.__name__ + ("(strategy=%r, issuer=%r, base_path=%r, max_scope_depth=%r, vault_server=%r, vault_issuer=%r)" % ( + self.strategy, self.issuer, self.base_path, self.max_scope_depth, self.vault_server, self.vault_issuer + )) + + def validate(self) -> Set[str]: + """Return a set of error strings in the data.""" + errors = set() + errprefix = "CredentialGeneration:" + + # Validate Strategy + if self.strategy not in self.STRATEGIES: + errors.add(f"{errprefix} invalid Strategy {self.strategy}") + + # Validate Issuer + if not self.issuer: + errors.add(f"{errprefix} Issuer not specified") + elif not isinstance(self.issuer, str): + errors.add(f"{errprefix} invalid Issuer {self.issuer}") + else: + parsed_issuer = urllib.parse.urlparse(self.issuer) + if not parsed_issuer.netloc or parsed_issuer.scheme != "https": + errors.add(f"{errprefix} Issuer not a valid URL {self.issuer}") + + # Validate BasePath + if self.base_path and not isinstance(self.base_path, str): + errors.add(f"{errprefix} invalid BasePath {self.base_path}") + + # Validate MaxScopeDepth + if self.max_scope_depth: + try: + int(self.max_scope_depth) + except TypeError: + errors.add(f"{errprefix} invalid MaxScopeDepth (not an integer) {self.max_scope_depth}") + else: + if self.max_scope_depth < 0: + errors.add(f"{errprefix} negative MaxScopeDepth {self.max_scope_depth}") + + # Validate VaultServer + if self.vault_server: + if self.strategy != self.STRATEGY_VAULT: + errors.add(f"{errprefix} VaultServer specified for a {self.strategy} strategy") + else: + if self.strategy == self.STRATEGY_VAULT: + errors.add(f"{errprefix} VaultServer not specified for a {self.strategy} strategy") + + # Validate VaultIssuer + if self.vault_issuer and self.strategy != self.STRATEGY_VAULT: + errors.add(f"{errprefix} VaultIssuer specified for a {self.strategy} strategy") + + return errors + + +class Namespace: + def __init__( + self, + path: str, + vo_name: str, + allowed_origins: List[str], + allowed_caches: List[str], + authz_list: List[AuthMethod], + writeback: Optional[str], + dirlist: Optional[str], + credential_generation: Optional[CredentialGeneration], + ): + self.path = path + self.vo_name = vo_name + self.allowed_origins = allowed_origins + self.allowed_caches = allowed_caches + self.authz_list = authz_list + self.writeback = writeback + self.dirlist = dirlist + self.credential_generation = credential_generation + + def is_public(self) -> bool: + return self.authz_list and self.authz_list[0].is_public + + +def _parse_authz_scitokens(attributes: Dict, authz: Dict) -> Tuple[AuthMethod, Optional[str]]: + """Parse a SciTokens dict in an authz list for a namespace. On success, return a SciTokenAuth instance and None; + on failure, return a NullAuth instance and a string indicating the error. + """ + errors = "" + issuer = attributes.get("Issuer") + if not issuer: + errors += "'Issuer' missing or empty; " + base_path = attributes.get("BasePath", attributes.get("Base Path")) + if not base_path: + errors += "'BasePath' missing or empty; " + restricted_path = attributes.get("RestrictedPath", attributes.get("Restricted Path", None)) + if restricted_path and not isinstance(restricted_path, str): + errors += "'RestrictedPath' not a string; " + map_subject = attributes.get("MapSubject", attributes.get("Map Subject", False)) + if not isinstance(map_subject, bool): + errors += "'MapSubject' not a boolean; " + if errors: + errors = errors[:-2] # chop off last '; ' + return NullAuth(), f"Invalid SciTokens auth {authz}: {errors}" + return SciTokenAuth( + issuer=issuer, + base_path=base_path, + restricted_path=restricted_path, + map_subject=map_subject + ), None + + +def _parse_authz_dict(authz: Dict) -> Tuple[AuthMethod, Optional[str]]: + """Return the instance of the appropriate AuthMethod from a single item of dict type in an authz list. + An authz list item can be a dict for FQAN, DN, or SciTokens. + + We are expecting only one element in this dict: the key indicates the authorization type, + and the value is the contents. + + On success, return the appropriate AuthMethod and None; on failure, return a NullAuth and a string describing the error. + """ + + for auth_type, attributes in authz.items(): + if auth_type == "SciTokens": + if not isinstance(attributes, dict) or not attributes: + return NullAuth(), f"Invalid SciTokens auth {authz}: no attributes" + return _parse_authz_scitokens(attributes=attributes, authz=authz) + elif auth_type == "FQAN": + if not attributes: + return NullAuth(), f"Invalid FQAN auth {authz}: FQAN missing or empty" + return FQANAuth(fqan=attributes), None + elif auth_type == "DN": + if generate_dn_hash is None: + return NullAuth(), f"'asn1' library unavailable; cannot handle DN auth {authz}" + if not attributes: + return NullAuth(), f"Invalid DN auth {authz}: DN missing or empty" + return DNAuth(dn=attributes), None + else: + return NullAuth(), f"Unknown auth type {auth_type} in {authz}" + + +def _parse_authz_str(authz: str) -> Tuple[AuthMethod, Optional[str]]: + """Return the instance of the appropriate AuthMethod from a single item of string type in an authz list. + An authz list item can be a string for FQAN and DN auth only, or PUBLIC. + + On success, return the appropriate AuthMethod and None; on failure, return a NullAuth and a string describing the error. + """ + if authz.startswith("FQAN:"): + fqan = authz[5:].strip() + if not fqan: + return NullAuth(), f"Invalid FQAN auth {authz}: FQAN missing or empty" + return FQANAuth(fqan=fqan), None + elif authz.startswith("DN:"): + if generate_dn_hash is None: + return NullAuth(), f"'asn1' library unavailable; cannot handle DN auth {authz}" + dn = authz[3:].strip() + if not dn: + return NullAuth(), f"Invalid DN auth {authz}: DN missing or empty" + return DNAuth(dn=dn), None + elif authz.strip() == "PUBLIC": + return PublicAuth(), None + else: + return NullAuth(), f"Unknown authz list entry {authz}" + + +def parse_authz(authz: Union[str, Dict]) -> Tuple[AuthMethod, Optional[str]]: + """Return the instance of the appropriate AuthMethod from a single item in an authz list for a namespace. + + An authz list item can be a string (for FQAN or DN auth) or dict (FQAN, DN, or SciTokens auth). + Return a tuple with the AuthMethod and an optional error string; if there is an error, the auth method is a NullAuth + and the error string contains a description of the error. If there is no error, the error string is None. + """ + # YAML note: + # This is a string: + # - FQAN:/foobar + # This is a dict: + # - FQAN: /foobar + # Accept both. + if isinstance(authz, dict): + return _parse_authz_dict(authz) + elif isinstance(authz, str): + return _parse_authz_str(authz) + else: + return NullAuth(), f"Unknown authz list entry {authz}" + + +class StashCache: + def __init__(self, vo_name: str, yaml_data: ParsedYaml): + self.vo_name = vo_name + self.namespaces: OrderedDict[str, Namespace] = OrderedDict() + self.errors: Set[str] = set() + self.load_yaml(yaml_data) + + def load_yaml(self, yaml_data: ParsedYaml): + if is_null(yaml_data, "Namespaces"): + return + + # Handle both old format and new format for Namespaces + if isinstance(yaml_data["Namespaces"], list): + return self.load_new_yaml(yaml_data) + else: + return self.load_old_yaml(yaml_data) + + def load_new_yaml(self, yaml_data: ParsedYaml): + """Load new format Namespaces info: + + Namespaces is a list of dicts; AllowedOrigins and AllowedCaches are elements of each dict. + """ + for idx, ns_data in enumerate(yaml_data["Namespaces"]): + if "Path" not in ns_data: + self.errors.add(f"Namespace #{idx}: No Path") + continue + + path = ns_data["Path"] + if path in self.namespaces: + orig_vo_name = self.namespaces[path].vo_name + self.errors.add(f"Namespace #{idx}: Redefining {path}; original was defined in {orig_vo_name}") + continue + + authz_list = self.parse_authz_list(path=path, unparsed_authz_list=ns_data.get("Authorizations", [])) + + credential_generation = None + if "CredentialGeneration" in ns_data: + cg = ns_data["CredentialGeneration"] + credential_generation = CredentialGeneration( + strategy=cg.get("Strategy", ""), + issuer=cg.get("Issuer", ""), + max_scope_depth=cg.get("MaxScopeDepth", None), + vault_server=cg.get("VaultServer", None), + base_path=cg.get("BasePath", None), + vault_issuer=cg.get("VaultIssuer", None), + ) + cg_errors = credential_generation.validate() + if cg_errors: + self.errors += {f"Namespace {path}: {e}" for e in cg_errors} + continue + + self.namespaces[path] = Namespace( + path=path, + vo_name=self.vo_name, + allowed_origins=ns_data.get("AllowedOrigins", []), + allowed_caches=ns_data.get("AllowedCaches", []), + authz_list=authz_list, + writeback=ns_data.get("Writeback", None), + dirlist=ns_data.get("DirList", None), + credential_generation=credential_generation, + ) + + def load_old_yaml(self, yaml_data: ParsedYaml): + """Load old format Namespaces/AllowedOrigins/AllowedCaches info: + + Namespaces is a dict, and there are also AllowedOrigins and AllowedCaches lists at the same level. + """ + for path, unparsed_authz_list in yaml_data["Namespaces"].items(): + authz_list = self.parse_authz_list(path, unparsed_authz_list) + if path in self.namespaces: + orig_vo_name = self.namespaces[path].vo_name + self.errors.add(f"Redefining {path}; original was defined in {orig_vo_name}") + continue + self.namespaces[path] = Namespace( + path=path, + vo_name=self.vo_name, + allowed_origins=yaml_data.get("AllowedOrigins", []), + allowed_caches=yaml_data.get("AllowedCaches", []), + authz_list=authz_list, + writeback=None, + dirlist=None, + credential_generation=None, + ) + + def parse_authz_list(self, path: str, unparsed_authz_list: List[Union[str, Dict]]) -> List[AuthMethod]: + authz_list = [] + for authz in unparsed_authz_list: + parsed_authz, err = parse_authz(authz) + if err: + self.errors.add(f"Namespace {path}: {err}") + continue + if parsed_authz.is_public: + return [parsed_authz] + else: + authz_list.append(parsed_authz) + return authz_list diff --git a/src/webapp/flask_common.py b/src/webapp/flask_common.py new file mode 100644 index 000000000..a5bc662d1 --- /dev/null +++ b/src/webapp/flask_common.py @@ -0,0 +1,22 @@ +from flask import Response +from .common import to_csv, to_json_bytes +from typing import List + +def create_accepted_response(data: List, headers, default=None) -> Response: + """Provides CSV or JSON options for list of list(string)""" + + if not default: + default = "application/json" + + accepted_response_builders = { + "text/csv": lambda: Response(to_csv(data), mimetype="text/csv"), + "application/json": lambda: Response(to_json_bytes(data), mimetype="application/json"), + } + + requested_types = set(headers.get('Accept', 'default').replace(' ', '').split(",")) + accepted_and_requested = set(accepted_response_builders.keys()).intersection(requested_types) + + if accepted_and_requested: + return accepted_response_builders[accepted_and_requested.pop()]() + else: + return accepted_response_builders[default]() diff --git a/src/webapp/forms.py b/src/webapp/forms.py index aeef667b3..c8c69e6ee 100644 --- a/src/webapp/forms.py +++ b/src/webapp/forms.py @@ -1,10 +1,10 @@ import datetime +import yaml from flask_wtf import FlaskForm from wtforms import SelectField, SelectMultipleField, StringField, \ - TextAreaField, SubmitField -from wtforms.fields.html5 import TimeField, DateField -from wtforms.validators import InputRequired + TextAreaField, SubmitField, TimeField, DateField +from wtforms.validators import InputRequired, ValidationError from . import models @@ -150,17 +150,17 @@ class GenerateResourceGroupDowntimeForm(FlaskForm): yamloutput = TextAreaField(None, render_kw={"readonly": True, "style": "font-family:monospace; font-size:small;", - "rows": "15"}) + "rows": "10"}) class Meta: - csrf = False # CSRF not needed because no data gets modified + csrf = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.infos = "" # https://stackoverflow.com/a/21815180 - def validate(self): + def validate(self, extra_validators=None): self.infos = "" if not super().validate(): @@ -211,7 +211,6 @@ def get_yaml(self, resources, service_names_by_resource) -> str: return yaml - class GenerateDowntimeForm(FlaskForm): scheduled = SelectField("Scheduled (registered at least 24 hours in advance)", [InputRequired()], choices=[ @@ -246,17 +245,17 @@ class GenerateDowntimeForm(FlaskForm): yamloutput = TextAreaField(None, render_kw={"readonly": True, "style": "font-family:monospace; font-size:small;", - "rows": "15"}) + "rows": "10"}) class Meta: - csrf = False # CSRF not needed because no data gets modified + csrf = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.infos = "" # https://stackoverflow.com/a/21815180 - def validate(self): + def validate(self, extra_validators=None): self.infos = "" if not super().validate(): @@ -301,3 +300,75 @@ def get_yaml(self) -> str: resource_name=self.resource.data, services=self.services.data, ) + + +class GenerateProjectForm(FlaskForm): + project_name = StringField("Project Name", [InputRequired()]) + pi_first_name = StringField("PI First Name", [InputRequired()]) + pi_last_name = StringField("PI Last Name", [InputRequired()]) + pi_department_or_organization = StringField("PI Department or Organization", [InputRequired()]) + pi_institution = StringField("PI Institution", [InputRequired()]) + field_of_science = SelectField("Field of Science", [InputRequired()]) + + description = TextAreaField(None, render_kw={ + "style": "font-family:monospace; font-size:small;", + "rows": "5" + }) + + yaml_output = TextAreaField(None, render_kw={"readonly": True, + "style": "font-family:monospace; font-size:small;", + "rows": "10"}) + + auto_submit = SubmitField("Login to Github to Submit Automatically") + manual_submit = SubmitField("Submit Manually") + + class Meta: + csrf = True + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.project_name.data = kwargs.get("project_name", self.project_name.data) + self.pi_first_name.data = kwargs.get("pi_first_name", self.pi_first_name.data) + self.pi_last_name.data = kwargs.get("pi_last_name", self.pi_last_name.data) + self.pi_department_or_organization.data = kwargs.get("pi_department_or_organization", self.pi_department_or_organization.data) + self.pi_institution.data = kwargs.get("pi_institution", self.pi_institution.data) + self.field_of_science.data = kwargs.get("field_of_science", self.field_of_science.data) + self.description.data = kwargs.get("description", self.description.data) + + self.infos = "" + + def validate_project_name(form, field): + if not set(field.data).isdisjoint(set('/<>:"\\|?* ')): + intersection = set(field.data).intersection(set('/<>:\"\\|?* ')) + raise ValidationError(f"Must be valid filename, invalid chars: {','.join(intersection)}") + + def get_yaml(self) -> str: + return yaml.dump({ + "Description": self.description.data, + "FieldOfScience": self.field_of_science.data, + "Department": self.pi_department_or_organization.data, + "Organization": self.pi_institution.data, + "PIName": f"{self.pi_first_name.data} {self.pi_last_name.data}" + }) + + def as_dict(self): + return { + "description": self.description.data, + "field_of_science": self.field_of_science.data, + "pi_department_or_organization": self.pi_department_or_organization.data, + "pi_institution": self.pi_institution.data, + "pi_first_name": self.pi_first_name.data, + "pi_last_name": self.pi_last_name.data, + "pi_name": f"{self.pi_first_name.data} {self.pi_last_name.data}", + "project_name": self.project_name.data + } + + def clear(self): + self.project_name.data = "" + self.pi_first_name.data = "" + self.pi_last_name.data = "" + self.pi_department_or_organization.data = "" + self.pi_institution.data = "" + self.field_of_science.data = "" + self.description.data = "" \ No newline at end of file diff --git a/src/webapp/github.py b/src/webapp/github.py index d3d2fe837..bd7fd21d1 100644 --- a/src/webapp/github.py +++ b/src/webapp/github.py @@ -3,6 +3,8 @@ import re import urllib.error import urllib.request +import urllib.parse +import certifi api_baseurl = "https://api.github.com" @@ -16,12 +18,70 @@ def mk_github_authstr(user, passwd): raw = '%s:%s' % (user, passwd) return base64.encodebytes(raw.encode()).decode().replace('\n', '') + def api_path2url(api_path, **kw): fmtstr = re.sub(r':([a-z]+)\b', r'{\1}', api_path) path = fmtstr.format(**kw) url = api_baseurl + path return url + +def http_to_dict(success, http_response, throw_error=True): + """http json response to dict""" + + if success: + return json.load(http_response.fp) + + if throw_error: + + if http_response == "Not Found": + raise GithubNotFoundException(f"Request not successful: {http_response}") + + elif http_response == "Reference already exists": + raise GithubReferenceExistsException + + else: + raise GithubRequestException(f"Request not successful: {http_response}") + + return {} + + +class GithubRequestException(Exception): + pass + + +class GithubNotFoundException(GithubRequestException): + pass + + +class GithubReferenceExistsException(GithubRequestException): + pass + + +class GithubUser: + + def __init__(self, name, email): + self.name = name + self.email = email + + @classmethod + def from_token(cls, token): + gh_auth = GitHubAuth(None, token) + user_response = http_to_dict(*gh_auth.get_user()) + email_response = http_to_dict(*gh_auth.get_user_email()) + + # Grab the first visible email to use, it doesn't matter + visible_email = list(filter(lambda x: x['visibility'] != 'private', email_response))[0]['email'] + + return cls(user_response["name"], visible_email) + + def to_dict(self): + return { + "name": self.name, + "email": self.email + } + + class GitHubAuth: api_user = None api_token = None @@ -76,7 +136,10 @@ def publish_pr_review(self, owner, repo, num, body, action, sha): # action: APPROVE, REQUEST_CHANGES, or COMMENT api_path = "/repos/:owner/:repo/pulls/:number/reviews" url = api_path2url(api_path, owner=owner, repo=repo, number=num) - data = {'event': action, 'commit_id': sha} + data = { + 'event': action, + 'commit_id': sha + } if body is not None: data['body'] = body return self.github_api_call('POST', url, data) # 200 OK @@ -88,35 +151,213 @@ def hit_merge_button(self, owner, repo, num, sha, title=None, msg=None): api_path = "/repos/:owner/:repo/pulls/:number/merge" url = api_path2url(api_path, owner=owner, repo=repo, number=num) data = {} - if sha: data['sha'] = sha - if title: data['commit_title'] = title + if sha: data['sha'] = sha + if title: data['commit_title'] = title if msg: data['commit_message'] = msg return self.github_api_call('PUT', url, data) # 200 OK / 405 (not mergeable) / 409 (sha mismatch) + def create_git_ref(self, owner, repo, ref, sha): + """https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#create-a-reference""" + api_path = "/repos/:owner/:repo/git/refs" + url = api_path2url(api_path, owner=owner, repo=repo) + data = { + "ref": ref, + "sha": sha + } + return self.github_api_call('POST', url, data) + + def get_contents(self, owner, repo, path, ref=None): + """https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#get-repository-content""" + api_path = "/repos/:owner/:repo/contents/:path" + url = api_path2url(api_path, owner=owner, repo=repo, path=path) + data = {} + if ref: data['ref'] = ref + return self.github_api_call('GET', url, data) + + def get_branch(self, owner, repo, branch): + """https://docs.github.com/en/rest/branches/branches?apiVersion=2022-11-28#get-a-branch""" + api_path = "/repos/:owner/:repo/branches/:branch" + url = api_path2url(api_path, owner=owner, repo=repo, branch=branch) + + return self.github_api_call("GET", url, None) + + def update_file(self, owner, repo, path, message, content, sha=None, branch=None, committer: GithubUser = None, + author: GithubUser = None): + """https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#create-or-update-file-contents""" + api_path = "/repos/:owner/:repo/contents/:path" + url = api_path2url(api_path, owner=owner, repo=repo, path=path) + data = { + "message": message, + "content": content + } + if sha: data['sha'] = sha + if branch: data['branch'] = branch + if committer: data['committer'] = committer.to_dict() + if author: data['author'] = author.to_dict() + + return self.github_api_call("PUT", url, data) + + def create_pull(self, owner, repo, title, head, base, body=None, maintainer_can_modify: bool = None, + draft: bool = None, issue: int = None): + """https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#create-a-pull-request""" + api_path = "/repos/:owner/:repo/pulls" + url = api_path2url(api_path, owner=owner, repo=repo) + data = { + "head": head, + "base": base + } + if title: data['title'] = title + if body: data['body'] = body + if maintainer_can_modify: data['maintainer_can_modify'] = maintainer_can_modify + if draft: data['draft'] = draft + if issue: data['issue'] = issue + + return self.github_api_call("POST", url, data) + + def get_repo(self, owner, repo): + """https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository""" + api_path = "/repos/:owner/:repo" + url = api_path2url(api_path, owner=owner, repo=repo) + + return self.github_api_call("GET", url, None) + + def get_user(self): + """https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#get-the-authenticated-user""" + api_path = "/user" + url = api_path2url(api_path) + + return self.github_api_call("GET", url, None) + + def get_user_email(self): + """https://docs.github.com/en/rest/users/emails?apiVersion=2022-11-28#list-email-addresses-for-the-authenticated-user""" + api_path = "/user/emails" + url = api_path2url(api_path) + + return self.github_api_call("GET", url, None) + def get_api_url(self, url): return self.github_api_call('GET', url, None) def target_repo(self, owner, repo): return GitHubRepoAPI(self, owner, repo) + class GitHubRepoAPI: # wrapper around GitHubAuth with (owner,repo) specified up front - def __init__(self, ghauth, owner, repo): + def __init__(self, ghauth: GitHubAuth, owner, repo): self.ghauth = ghauth self.owner = owner self.repo = repo + # Add place for Github Repo Data to be added if asked for + self._repo_data = None + + def __getattr__(self, item): + """If requested data isn't found locally see if Github has it""" + if item in self.repo_data: + return self.repo_data[item] + + return None + + @property + def repo_data(self): + if not self._repo_data: + self._repo_data = http_to_dict(*self.get_repo()) + + return self._repo_data + + def get_repo(self): + return self.ghauth.get_repo(self.owner, self.repo) + def publish_issue_comment(self, num, body): return self.ghauth.publish_issue_comment(self.owner, self.repo, num, body) def publish_pr_review(self, num, body, action, sha): return self.ghauth.publish_pr_review(self.owner, self.repo, - num, body, action, sha) + num, body, action, sha) def hit_merge_button(self, num, sha, title=None, msg=None): return self.ghauth.hit_merge_button(self.owner, self.repo, - num, sha, title, msg) + num, sha, title, msg) + + def create_git_ref(self, ref, sha): + return self.ghauth.create_git_ref(self.owner, self.repo, ref=ref, sha=sha) + + def get_contents(self, path, ref=None): + return self.ghauth.get_contents(self.owner, self.repo, + path, ref) + + def update_file(self, path, message, content, sha=None, branch=None, committer: GithubUser = None, + author: GithubUser = None): + return self.ghauth.update_file(self.owner, self.repo, + path, message, content, sha, branch, committer, author) + + def create_pull(self, title, head, base, body=None, maintainer_can_modify=None, draft=None, issue=None): + return self.ghauth.create_pull(self.owner, self.repo, + title, head, base, body, maintainer_can_modify, draft, issue) + + def get_branch(self, branch): + return self.ghauth.get_branch(self.owner, self.repo, + branch) + + +def update_file_pr( + file_path: str, + file_content: str, + branch: str, + message: str, + committer: GithubUser, + root_repo: GitHubRepoAPI, + fork_repo: GitHubRepoAPI +): + """Creates a PR for an updated/new file from a repo fork to the root repository""" + + file_sha = None + try: + previous_contents_encoded = http_to_dict(*fork_repo.get_contents(file_path, ref=fork_repo.default_branch)) + + previous_contents = base64.b64decode(previous_contents_encoded["content"]).decode("utf-8") + file_content = f"{previous_contents}\n{file_content}" + + file_sha = previous_contents_encoded['sha'] + + except GithubNotFoundException: + pass + + return create_file_pr(file_path, file_content, branch, message, committer, root_repo, fork_repo, file_sha) + + +def create_file_pr( + file_path: str, + file_content: str, + branch: str, + message: str, + committer: GithubUser, + root_repo: GitHubRepoAPI, + fork_repo: GitHubRepoAPI, + file_sha: str = None, +): + """Creates a PR for a new file from a repo fork to the root repository""" + + encoded_file_content = base64.b64encode(file_content.encode()).decode("utf-8") + + fork_default_branch = http_to_dict(*fork_repo.get_branch(root_repo.default_branch)) + + create_ref_response = http_to_dict(*fork_repo.create_git_ref( + ref=f"refs/heads/{branch}", + sha=fork_default_branch['commit']['sha'] + )) + + update_file_response = http_to_dict(*fork_repo.update_file(file_path, message, encoded_file_content, sha=file_sha, branch=branch, + committer=committer)) + + pull_response = http_to_dict(*root_repo.create_pull( + title=message, + head=f"{fork_repo.owner}:{branch}", + base=root_repo.default_branch + )) + return pull_response diff --git a/src/webapp/ldap_data.py b/src/webapp/ldap_data.py index 43b706985..6f38d3d64 100644 --- a/src/webapp/ldap_data.py +++ b/src/webapp/ldap_data.py @@ -72,6 +72,11 @@ def cilogon_id_map_to_yaml_data(m): data[id_] = {'CILogonID' : id_, 'FullName' : entry['data']['cn'][0], 'ContactInformation' : cinfo} + + github = entry['data'].get('voPersonExternalID') + if github: + data[id_]['GitHub'] = github[0] + return data @@ -91,7 +96,7 @@ def get_email_lookup(yaml_data): continue for Email in ('PrimaryEmail', 'SecondaryEmail'): if Email in ci: - email_lookup[ci[Email]] = contact + email_lookup[ci[Email].lower()] = contact return email_lookup diff --git a/src/webapp/models.py b/src/webapp/models.py index ea6f7477d..1ac6e4243 100644 --- a/src/webapp/models.py +++ b/src/webapp/models.py @@ -2,7 +2,7 @@ import logging import os import time -from typing import Dict, Set, List +from typing import Dict, Set, List, Optional import yaml @@ -78,6 +78,10 @@ def __init__(self, config=None, strict=False): self.ligo_ldap_passfile = config.get("LIGO_LDAP_PASSFILE") self.ligo_ldap_url = config.get("LIGO_LDAP_URL") self.ligo_ldap_user = config.get("LIGO_LDAP_USER") + self.github_oauth_client_secret = config.get("GITHUB_OAUTH_CLIENT_SECRET") + self.auto_pr_gh_api_user = config.get("AUTO_PR_GH_API_USER") + self.auto_pr_gh_api_token = config.get("AUTO_PR_GH_API_TOKEN") + self.csrf_secret_key = config.get("CSRF_SECRET_KEY") if config["CONTACT_DATA_DIR"]: self.contacts_file = os.path.join(config["CONTACT_DATA_DIR"], "contacts.yaml") else: @@ -137,9 +141,12 @@ def _update_contacts_repo(self): return False return True - def get_contact_db_data(self) -> ContactsData: + def get_contact_db_data(self) -> Optional[ContactsData]: """ Get the contact information from a private git repo + + Returns an empty ContactsData if CONTACT_DATA_DIR is not specified. + May return None if we fail to get the data for the first time. """ if not self.config.get("CONTACT_DATA_DIR", None): log.debug("CONTACT_DATA_DIR not specified; getting empty contacts") @@ -160,9 +167,10 @@ def get_contact_db_data(self) -> ContactsData: return self.contacts_data.data - def get_comanage_data(self) -> ContactsData: + def get_comanage_data(self) -> Optional[ContactsData]: """ Get the contact information from comanage / cilogon ldap + May return None if we fail to get the data for the first time. """ if not (self.cilogon_ldap_url and self.cilogon_ldap_user and self.cilogon_ldap_passfile): @@ -189,9 +197,10 @@ def get_cilogon_ldap_id_map(self): ldappass = readfile(self.cilogon_ldap_passfile, log) return ldap_data.get_cilogon_ldap_id_map(url, user, ldappass) - def get_contacts_data(self) -> ContactsData: + def get_contacts_data(self) -> Optional[ContactsData]: """ Get the contact information from a private git repo + May return None if we fail to get the data for the first time. """ if self.merged_contacts_data.should_update(): try: @@ -207,9 +216,10 @@ def get_contacts_data(self) -> ContactsData: return self.merged_contacts_data.data - def get_ligo_dn_list(self) -> List[str]: + def get_ligo_dn_list(self) -> Optional[List[str]]: """ Get list of DNs of authorized LIGO users from their LDAP + May return None if we fail to get the data for the first time. """ if not (self.ligo_ldap_url and self.ligo_ldap_user and self.ligo_ldap_passfile): @@ -229,9 +239,10 @@ def get_ligo_dn_list(self) -> List[str]: return self.ligo_dn_list.data - def get_dns(self) -> Set: + def get_dns(self) -> Optional[Set]: """ Get the set of DNs allowed to access "special" data (such as contact info) + May return None if we fail to get the data for the first time. """ if self.dn_set.should_update(): contacts_data = self.get_contacts_data() @@ -244,7 +255,11 @@ def get_dns(self) -> Set: self.contacts_data.try_again() return self.dn_set.data - def get_topology(self) -> Topology: + def get_topology(self) -> Optional[Topology]: + """ + Get Topology data. + May return None if we fail to get the data for the first time. + """ if self.topology.should_update(): ok = self._update_topology_repo() if ok: @@ -260,7 +275,11 @@ def get_topology(self) -> Topology: return self.topology.data - def get_vos_data(self) -> VOsData: + def get_vos_data(self) -> Optional[VOsData]: + """ + Get VO Data. + May return None if we fail to get the data for the first time. + """ if self.vos_data.should_update(): ok = self._update_topology_repo() if ok: @@ -276,7 +295,11 @@ def get_vos_data(self) -> VOsData: return self.vos_data.data - def get_projects(self) -> Dict: + def get_projects(self) -> Optional[Dict]: + """ + Get Project data. + May return None if we fail to get the data for the first time. + """ if self.projects.should_update(): ok = self._update_topology_repo() if ok: @@ -292,7 +315,11 @@ def get_projects(self) -> Dict: return self.projects.data - def get_mappings(self) -> mappings.Mappings: + def get_mappings(self) -> Optional[mappings.Mappings]: + """ + Get mappings data. + May return None if we fail to get the data for the first time. + """ if self.mappings.should_update(): ok = self._update_topology_repo() if ok: diff --git a/src/webapp/project_reader.py b/src/webapp/project_reader.py index 9b26ebbb2..e50399c76 100755 --- a/src/webapp/project_reader.py +++ b/src/webapp/project_reader.py @@ -51,14 +51,15 @@ def get_one_project(file: str, campus_grid_ids: Dict, vos_data: VOsData) -> Dict data = None try: data = load_yaml_file(file) - if 'CampusGrid' in data['Sponsor']: - name = data['Sponsor']['CampusGrid']['Name'] - ID = campus_grid_ids[name] - data['Sponsor']['CampusGrid'] = OrderedDict([("ID", ID), ("Name", name)]) - elif 'VirtualOrganization' in data['Sponsor']: - name = data['Sponsor']['VirtualOrganization']['Name'] - ID = vos_data.vos[name]['ID'] - data['Sponsor']['VirtualOrganization'] = OrderedDict([("ID", ID), ("Name", name)]) + if 'Sponsor' in data: + if 'CampusGrid' in data['Sponsor']: + name = data['Sponsor']['CampusGrid']['Name'] + ID = campus_grid_ids[name] + data['Sponsor']['CampusGrid'] = OrderedDict([("ID", ID), ("Name", name)]) + elif 'VirtualOrganization' in data['Sponsor']: + name = data['Sponsor']['VirtualOrganization']['Name'] + ID = vos_data.vos[name]['ID'] + data['Sponsor']['VirtualOrganization'] = OrderedDict([("ID", ID), ("Name", name)]) if 'ResourceAllocations' in data: resource_allocations = [get_resource_allocation(ra, idx) for idx, ra in enumerate(data['ResourceAllocations'])] diff --git a/src/webapp/rest_data.py b/src/webapp/rest_data.py new file mode 100755 index 000000000..c3aa021fb --- /dev/null +++ b/src/webapp/rest_data.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python3 + +# COManage REST API functions + + +# This module is not currently used, as it proved TOO SLOW to query for +# identifiers in serial, and we found a cool workaround to make a limited +# number of interesting identifiers available to ldap queries. +# Nonetheless, we are keeping this code around in case we need to use the +# COManage REST API in the future from topology. +# +# https://opensciencegrid.atlassian.net/browse/SOFTWARE-5313 + + +import os +import re +import sys +import json +import getopt +import collections +import urllib.error +import urllib.request + + +ENDPOINT = "https://registry.cilogon.org/registry/" +OSG_CO_ID = 7 + +GET = "GET" +PUT = "PUT" +POST = "POST" +DELETE = "DELETE" + + +class Options: + endpoint = ENDPOINT + osg_co_id = OSG_CO_ID + authstr = None + + +options = Options() + + +def setup_auth(user, passwd): + options.authstr = mkauthstr(user, passwd) + + +def _make_bytes(s): + return s if isinstance(s, bytes) else s.encode() + + +def mkauthstr(user, passwd): + from base64 import encodebytes + user = _make_bytes(user) + passwd = _make_bytes(passwd) + raw_authstr = b'%s:%s' % (user, passwd) + return encodebytes(raw_authstr).decode().replace('\n', '') + + +def mkrequest(target, **kw): + return mkrequest2(GET, target, **kw) + + +def mkrequest2(method, target, **kw): + return mkrequest3(method, target, data=None, **kw) + + +def mkrequest3(method, target, data, **kw): + url = os.path.join(options.endpoint, target) + if kw: + url += "?" + "&".join( "{}={}".format(k,v) for k,v in kw.items() ) + req = urllib.request.Request(url, json.dumps(data).encode("utf-8")) + req.add_header("Authorization", "Basic %s" % options.authstr) + req.add_header("Content-Type", "application/json") + req.get_method = lambda: method + return req + + +def call_api(target, **kw): + return call_api2(GET, target, **kw) + + +def call_api2(method, target, **kw): + return call_api3(method, target, data=None, **kw) + + +def call_api3(method, target, data, **kw): + req = mkrequest3(method, target, data, **kw) + resp = urllib.request.urlopen(req) + payload = resp.read() + return json.loads(payload) if payload else None + + +# primary api calls + + +def get_osg_co_groups(): + return call_api("co_groups.json", coid=options.osg_co_id) + + +def get_co_group_identifiers(gid): + return call_api("identifiers.json", cogroupid=gid) + + +def get_co_group_members(gid): + return call_api("co_group_members.json", cogroupid=gid) + + +def get_co_person_identifiers(pid): + return call_api("identifiers.json", copersonid=pid) + + +def get_co_group(gid): + grouplist = get_datalist("CoGroups", call_api("co_groups/%s.json" % gid)) + if not grouplist: + raise RuntimeError("No such CO Group Id: %s" % gid) + return grouplist[0] + + +def get_datalist(listname, data): + return data[listname] if data else [] + + +# specific queries + + +def get_osgid_github_map(): + osg_co_groups = get_datalist('CoGroups', get_osg_co_groups()) + + gids = [ g["Id"] for g in osg_co_groups ] + + cgms = [ get_datalist('CoGroupMembers', get_co_group_members(gid)) + for gid in gids ] + + pids = set( x['Person']['Id'] for cgm in cgms for x in cgm ) + pidids = { pid: get_datalist('Identifiers', get_co_person_identifiers(pid)) + for pid in pids } + + a = collections.defaultdict(dict) + for pid in pidids: + for identifier in pidids[pid]: + a[pid][identifier["Type"]] = identifier["Identifier"] + + return { a[pid]["osgid"]: a[pid]["GitHub"] + for pid in a if "osgid" in a[pid] and "GitHub" in a[pid] } + + +def merge_github_info(yaml_data, osg_github_map): + """ merge {OSGID: GitHub} map into yaml_data contacts, in-place """ + for id_, contact in yaml_data.items(): + if id_ in osg_github_map: + contact["GitHub"] = osg_github_map[id_] + elif contact.get("CILogonID") in osg_github_map: + contact["GitHub"] = osg_github_map[contact["CILogonID"]] + diff --git a/src/webapp/topology.py b/src/webapp/topology.py index 774d3cf4d..dee616829 100644 --- a/src/webapp/topology.py +++ b/src/webapp/topology.py @@ -39,9 +39,29 @@ class Facility(object): def __init__(self, name: str, id: int): self.name = name self.id = id + self.sites_by_name = dict() def get_tree(self) -> OrderedDict: - return OrderedDict([("ID", self.id), ("Name", self.name)]) + return OrderedDict([ + ("ID", self.id), + ("Name", self.name), + ("IsCCStar", self.is_ccstar) + ]) + + def add_site(self, site: 'Site'): + self.sites_by_name[site.name] = site + try: + del self._is_ccstar + except AttributeError: + pass + + @property + def is_ccstar(self): + """Check if any sites in this facility are tagged CC*""" + if not hasattr(self, "_is_ccstar"): + self._is_ccstar = any(site.is_ccstar for site in self.sites_by_name.values()) + + return self._is_ccstar class Site(object): @@ -50,6 +70,7 @@ def __init__(self, name: str, id: int, facility: Facility, site_info): self.name = name self.id = id self.facility = facility + self.resource_groups_by_name = {} self.other_data = site_info if "ID" in self.other_data: del self.other_data["ID"] @@ -57,8 +78,28 @@ def __init__(self, name: str, id: int, facility: Facility, site_info): def get_tree(self) -> OrderedDict: # Sort the other_data sorted_other_data = sorted(list(self.other_data.items()), key=lambda tup: tup[0]) - return OrderedDict([("ID", self.id), ("Name", self.name)] + sorted_other_data) + return OrderedDict( + [ + ("ID", self.id), + ("Name", self.name), + ("IsCCStar", self.is_ccstar) + ] + sorted_other_data + ) + + def add_resource_group(self, resource_group: 'ResourceGroup'): + self.resource_groups_by_name[resource_group.name] = resource_group + try: + del self._is_ccstar + except AttributeError: + pass + + @property + def is_ccstar(self): + """Check if any resource groups in this site are tagged CC*""" + if not hasattr(self, "_is_ccstar"): + self._is_ccstar = any(resource_group.is_ccstar for resource_group in self.resource_groups_by_name.values()) + return self._is_ccstar class Resource(object): def __init__(self, name: str, yaml_data: ParsedYaml, common_data: CommonData): @@ -164,11 +205,12 @@ def get_tree(self, authorized=False, filters: Filters = None) -> Optional[Ordere "Disable": False, "VOOwnership": "(Information not available)", "WLCGInformation": "(Information not available)", + "IsCCStar": self.is_ccstar } new_res = OrderedDict.fromkeys(["ID", "Name", "Active", "Disable", "Services", "Tags", "Description", "FQDN", "FQDNAliases", "VOOwnership", - "WLCGInformation", "ContactLists"]) + "WLCGInformation", "ContactLists", "IsCCStar"]) new_res.update(defaults) new_res.update(self.data) @@ -217,6 +259,20 @@ def get_tree(self, authorized=False, filters: Filters = None) -> Optional[Ordere return new_res + @property + def is_active(self): + """Check if the Resource is active and not disabled""" + return self.data.get("Active", True) and not self.data.get("Disable", False) + + @property + def is_ccstar(self): + """Check if this site is tagged as a CC* Site""" + if not hasattr(self, "_is_ccstar"): + self._is_ccstar = "CC*" in self.data.get("Tags", []) + + return self._is_ccstar + + def _expand_services(self, services: Dict) -> List[OrderedDict]: services_list = expand_attr_list(services, "Name", ordering=["Name", "Description", "Details"]) for svc in services_list: @@ -293,9 +349,11 @@ def _expand_wlcginformation(wlcg: Dict) -> OrderedDict: new_wlcg = OrderedDict.fromkeys(["InteropBDII", "LDAPURL", "InteropMonitoring", "InteropAccounting", "AccountingName", "KSI2KMin", "KSI2KMax", "StorageCapacityMin", - "StorageCapacityMax", "HEPSPEC", "APELNormalFactor", "TapeCapacity"]) + "StorageCapacityMax", "HEPSPEC", "APELNormalFactor", "HEPScore23Percentage", "TapeCapacity"]) new_wlcg.update(defaults) new_wlcg.update(wlcg) + if new_wlcg["HEPScore23Percentage"] is None: + del new_wlcg["HEPScore23Percentage"] return new_wlcg @@ -305,6 +363,7 @@ def __init__(self, name: str, yaml_data: ParsedYaml, site: Site, common_data: Co self.site = site self.service_types = common_data.service_types self.common_data = common_data + self.production = yaml_data.get("Production", "") scname = yaml_data["SupportCenter"] scid = int(common_data.support_centers[scname]["ID"]) @@ -367,9 +426,17 @@ def id(self): def key(self): return (self.site.name, self.name) + @property + def is_ccstar(self): + """Check if any resources in this resource group are tagged CC*""" + if not hasattr(self, "_is_ccstar"): + self._is_ccstar = any(resource.is_ccstar for resource in self.resources_by_name.values()) + + return self._is_ccstar + def _expand_rg(self) -> OrderedDict: new_rg = OrderedDict.fromkeys(["GridType", "GroupID", "GroupName", "Disable", "Facility", "Site", - "SupportCenter", "GroupDescription"]) + "SupportCenter", "GroupDescription", "IsCCStar"]) new_rg.update({"Disable": False}) new_rg.update(self.data) @@ -377,7 +444,8 @@ def _expand_rg(self) -> OrderedDict: new_rg["Site"] = self.site.get_tree() new_rg["GroupName"] = self.name new_rg["SupportCenter"] = self.support_center - production = new_rg.pop("Production") + new_rg["IsCCStar"] = self.is_ccstar + production = new_rg.get("Production") if production: new_rg["GridType"] = GRIDTYPE_1 else: @@ -401,7 +469,8 @@ def __init__(self, rg: ResourceGroup, yaml_data: ParsedYaml, common_data: Common self.created_time = None if not is_null(yaml_data, "CreatedTime"): self.created_time = self.parsetime(yaml_data["CreatedTime"]) - self.res = rg.resources_by_name[yaml_data["ResourceName"]] + self.res_name = yaml_data["ResourceName"] + self.res = rg.resources_by_name[self.res_name] self.service_names = yaml_data["Services"] self.service_ids = [common_data.service_types[x] for x in yaml_data["Services"]] self.id = yaml_data["ID"] @@ -577,12 +646,14 @@ def __init__(self, common_data: CommonData): self.service_names_by_resource = {} # type: Dict[str, List[str]] self.downtime_path_by_resource_group = defaultdict(set) self.downtime_path_by_resource = {} + self.present_downtimes_by_resource = defaultdict(list) # type: defaultdict[str, List[Downtime]] def add_rg(self, facility_name: str, site_name: str, name: str, parsed_data: ParsedYaml): try: rg = ResourceGroup(name, parsed_data, self.sites[site_name], self.common_data) self.rgs[(site_name, name)] = rg self.resource_group_by_site[site_name].add(rg.name) + self.sites[site_name].add_resource_group(rg) for r in rg.resources: self.resources_by_facility[facility_name].append(r) self.resources_by_resource_group[rg.name].append(r.name) @@ -597,7 +668,9 @@ def add_facility(self, name, id): self.facilities[name] = Facility(name, id) def add_site(self, facility_name, name, id, site_info): - self.sites[name] = Site(name, id, self.facilities[facility_name], site_info) + site = Site(name, id, self.facilities[facility_name], site_info) + self.facilities[facility_name].add_site(site) + self.sites[name] = site def get_resource_group_list(self): """ @@ -678,6 +751,8 @@ def add_downtime(self, sitename: str, rgname: str, downtime: ParsedYaml): log.warning("Invalid or missing data in downtime -- skipping: %r", err) return self.downtimes_by_timeframe[dt.timeframe].append(dt) + if dt.timeframe == Timeframe.PRESENT: + self.present_downtimes_by_resource[dt.res_name].append(dt) def safe_get_resource_by_fqdn(self, fqdn: str) -> Optional[Resource]: """Returns the first resource that has the given FQDN or None if no such resource exists.""" diff --git a/src/webapp/vos_data.py b/src/webapp/vos_data.py index ee194b5ec..2804eeb76 100644 --- a/src/webapp/vos_data.py +++ b/src/webapp/vos_data.py @@ -2,20 +2,16 @@ from collections import OrderedDict from logging import getLogger -from typing import Dict, List, Optional, Set, Tuple, Union +from typing import Dict, List, Optional -from .common import Filters, ParsedYaml, VOSUMMARY_SCHEMA_URL, is_null, expand_attr_list, order_dict, escape, \ - generate_dn_hash, XROOTD_CACHE_SERVER, XROOTD_ORIGIN_SERVER +from .common import Filters, ParsedYaml, VOSUMMARY_SCHEMA_URL, is_null, expand_attr_list, order_dict, escape +from .data_federation import StashCache from .contacts_reader import ContactsData log = getLogger(__name__) -ANY = "ANY" -ANY_PUBLIC = "ANY_PUBLIC" - - class VOsData(object): def __init__(self, contacts_data: ContactsData, reporting_groups_data: ParsedYaml): self.contacts_data = contacts_data @@ -271,287 +267,3 @@ def _expand_reporting_groups(self, reporting_groups_list: List, authorized: bool newdata["FQANs"] = None new_reporting_groups = expand_attr_list(new_reporting_groups, "Name", ordering=["Name", "FQANs", "Contacts"]) return {"ReportingGroup": new_reporting_groups} - - -# -# Code for handling DataFederations -# - -class AuthMethod: - is_public = False - used_in_authfile = False - used_in_scitokens_conf = False - - def get_authfile_id(self): - return "" - - def get_scitokens_conf_block(self, service_name: str): - return "" - - -class NullAuth(AuthMethod): - pass - - -class PublicAuth(AuthMethod): - is_public = True - used_in_authfile = True - - def __str__(self): - return "PUBLIC" - - def get_authfile_id(self): - return "u *" - - -class DNAuth(AuthMethod): - used_in_authfile = True - - def __init__(self, dn: str): - self.dn = dn - - def __str__(self): - return "DN: " + self.dn - - def get_dn_hash(self): - return generate_dn_hash(self.dn) - - def get_authfile_id(self): - return f"u {self.get_dn_hash()}" - - -class FQANAuth(AuthMethod): - used_in_authfile = True - - def __init__(self, fqan: str): - self.fqan = fqan - - def __str__(self): - return "FQAN: " + self.fqan - - def get_authfile_id(self): - return f"g {self.fqan}" - - -class SciTokenAuth(AuthMethod): - used_in_scitokens_conf = True - - def __init__(self, issuer: str, base_path: str, restricted_path: Optional[str], map_subject: bool): - self.issuer = issuer - self.base_path = base_path - self.restricted_path = restricted_path - self.map_subject = map_subject - - def __str__(self): - return f"SciToken: issuer={self.issuer} base_path={self.base_path} restricted_path={self.restricted_path} " \ - f"map_subject={self.map_subject}" - - def get_scitokens_conf_block(self, service_name: str): - if service_name not in [XROOTD_CACHE_SERVER, XROOTD_ORIGIN_SERVER]: - raise ValueError(f"service_name must be '{XROOTD_CACHE_SERVER}' or '{XROOTD_ORIGIN_SERVER}'") - block = (f"[Issuer {self.issuer}]\n" - f"issuer = {self.issuer}\n" - f"base_path = {self.base_path}\n") - if self.restricted_path: - block += f"restricted_path = {self.restricted_path}\n" - if service_name == XROOTD_ORIGIN_SERVER: - block += f"map_subject = {self.map_subject}\n" - - return block - - -class Namespace: - def __init__( - self, - path: str, - vo_name: str, - allowed_origins: List[str], - allowed_caches: List[str], - authz_list: List[AuthMethod], - writeback: Optional[str], - dirlist: Optional[str], - ): - self.path = path - self.vo_name = vo_name - self.allowed_origins = allowed_origins - self.allowed_caches = allowed_caches - self.authz_list = authz_list - self.writeback = writeback - self.dirlist = dirlist - - def is_public(self) -> bool: - return self.authz_list and self.authz_list[0].is_public - - -def _parse_authz_scitokens(attributes: Dict, authz: Dict) -> Tuple[AuthMethod, Optional[str]]: - """Parse a SciTokens dict in an authz list for a namespace. On success, return a SciTokenAuth instance and None; - on failure, return a NullAuth instance and a string indicating the error. - """ - errors = "" - issuer = attributes.get("Issuer") - if not issuer: - errors += "'Issuer' missing or empty; " - base_path = attributes.get("Base Path") - if not base_path: - errors += "'Base Path' missing or empty; " - restricted_path = attributes.get("Restricted Path", None) - if restricted_path and not isinstance(restricted_path, str): - errors += "'Restricted Path' not a string; " - map_subject = attributes.get("Map Subject", False) - if not isinstance(map_subject, bool): - errors += "'Map Subject' not a boolean; " - if errors: - errors = errors[:-2] # chop off last '; ' - return NullAuth(), f"Invalid SciTokens auth {authz}: {errors}" - return SciTokenAuth( - issuer=issuer, - base_path=base_path, - restricted_path=restricted_path, - map_subject=map_subject - ), None - - -def _parse_authz_dict(authz: Dict) -> Tuple[AuthMethod, Optional[str]]: - """Return the instance of the appropriate AuthMethod from a single item of dict type in an authz list. - An authz list item can be a dict for FQAN, DN, or SciTokens. - - We are expecting only one element in this dict: the key indicates the authorization type, - and the value is the contents. - - On success, return the appropriate AuthMethod and None; on failure, return a NullAuth and a string describing the error. - """ - - for auth_type, attributes in authz.items(): - if auth_type == "SciTokens": - if not isinstance(attributes, dict) or not attributes: - return NullAuth(), f"Invalid SciTokens auth {authz}: no attributes" - return _parse_authz_scitokens(attributes=attributes, authz=authz) - elif auth_type == "FQAN": - if not attributes: - return NullAuth(), f"Invalid FQAN auth {authz}: FQAN missing or empty" - return FQANAuth(fqan=attributes), None - elif auth_type == "DN": - if not attributes: - return NullAuth(), f"Invalid DN auth {authz}: DN missing or empty" - return DNAuth(dn=attributes), None - else: - return NullAuth(), f"Unknown auth type {auth_type} in {authz}" - - -def _parse_authz_str(authz: str) -> Tuple[AuthMethod, Optional[str]]: - """Return the instance of the appropriate AuthMethod from a single item of string type in an authz list. - An authz list item can be a string for FQAN and DN auth only, or PUBLIC. - - On success, return the appropriate AuthMethod and None; on failure, return a NullAuth and a string describing the error. - """ - if authz.startswith("FQAN:"): - fqan = authz[5:].strip() - if not fqan: - return NullAuth(), f"Invalid FQAN auth {authz}: FQAN missing or empty" - return FQANAuth(fqan=fqan), None - elif authz.startswith("DN:"): - dn = authz[3:].strip() - if not dn: - return NullAuth(), f"Invalid DN auth {authz}: DN missing or empty" - return DNAuth(dn=dn), None - elif authz.strip() == "PUBLIC": - return PublicAuth(), None - else: - return NullAuth(), f"Unknown authz list entry {authz}" - - -def parse_authz(authz: Union[str, Dict]) -> Tuple[AuthMethod, Optional[str]]: - """Return the instance of the appropriate AuthMethod from a single item in an authz list for a namespace. - - An authz list item can be a string (for FQAN or DN auth) or dict (FQAN, DN, or SciTokens auth). - Return a tuple with the AuthMethod and an optional error string; if there is an error, the auth method is a NullAuth - and the error string contains a description of the error. If there is no error, the error string is None. - """ - # YAML note: - # This is a string: - # - FQAN:/foobar - # This is a dict: - # - FQAN: /foobar - # Accept both. - if isinstance(authz, dict): - return _parse_authz_dict(authz) - elif isinstance(authz, str): - return _parse_authz_str(authz) - else: - return NullAuth(), f"Unknown authz list entry {authz}" - - -class StashCache: - def __init__(self, vo_name: str, yaml_data: ParsedYaml): - self.vo_name = vo_name - self.namespaces: OrderedDict[str, Namespace] = OrderedDict() - self.errors: Set[str] = set() - self.load_yaml(yaml_data) - - def load_yaml(self, yaml_data: ParsedYaml): - if is_null(yaml_data, "Namespaces"): - return - - # Handle both old format and new format for Namespaces - if isinstance(yaml_data["Namespaces"], list): - return self.load_new_yaml(yaml_data) - else: - return self.load_old_yaml(yaml_data) - - def load_new_yaml(self, yaml_data: ParsedYaml): - """Load new format Namespaces info: - - Namespaces is a list of dicts; AllowedOrigins and AllowedCaches are elements of each dict. - """ - for idx, ns_data in enumerate(yaml_data["Namespaces"]): - if "Path" not in ns_data: - self.errors.add(f"Namespace #{idx}: No Path") - continue - path = ns_data["Path"] - if path in self.namespaces: - orig_vo_name = self.namespaces[path].vo_name - self.errors.add(f"Namespace #{idx}: Redefining {path}; original was defined in {orig_vo_name}") - continue - authz_list = self.parse_authz_list(path=path, unparsed_authz_list=ns_data.get("Authorizations", [])) - self.namespaces[path] = Namespace( - path=path, - vo_name=self.vo_name, - allowed_origins=ns_data.get("AllowedOrigins", []), - allowed_caches=ns_data.get("AllowedCaches", []), - authz_list=authz_list, - writeback=ns_data.get("Writeback", None), - dirlist=ns_data.get("DirList", None), - ) - - def load_old_yaml(self, yaml_data: ParsedYaml): - """Load old format Namespaces/AllowedOrigins/AllowedCaches info: - - Namespaces is a dict, and there are also AllowedOrigins and AllowedCaches lists at the same level. - """ - for path, unparsed_authz_list in yaml_data["Namespaces"].items(): - authz_list = self.parse_authz_list(path, unparsed_authz_list) - if path in self.namespaces: - orig_vo_name = self.namespaces[path].vo_name - self.errors.add(f"Redefining {path}; original was defined in {orig_vo_name}") - continue - self.namespaces[path] = Namespace( - path=path, - vo_name=self.vo_name, - allowed_origins=yaml_data.get("AllowedOrigins", []), - allowed_caches=yaml_data.get("AllowedCaches", []), - authz_list=authz_list, - writeback=None, - dirlist=None) - - def parse_authz_list(self, path: str, unparsed_authz_list: List[Union[str, Dict]]) -> List[AuthMethod]: - authz_list = [] - for authz in unparsed_authz_list: - parsed_authz, err = parse_authz(authz) - if err: - self.errors.add(f"Namespace {path}: {err}") - continue - if parsed_authz.is_public: - return [parsed_authz] - else: - authz_list.append(parsed_authz) - return authz_list diff --git a/src/webapp/x509.py b/src/webapp/x509.py new file mode 100644 index 000000000..5724cb60f --- /dev/null +++ b/src/webapp/x509.py @@ -0,0 +1,59 @@ +import hashlib +import re + +import asn1 + +__oid_map = { + "DC": "0.9.2342.19200300.100.1.25", + "OU": "2.5.4.11", + "CN": "2.5.4.3", + "O": "2.5.4.10", + "ST": "2.5.4.8", + "C": "2.5.4.6", + "L": "2.5.4.7", + "postalCode": "2.5.4.17", + "street": "2.5.4.9", + "emailAddress": "1.2.840.113549.1.9.1", + } + + +def generate_dn_hash(dn: str) -> str: + """ + Given a DN one-liner as commonly encoded in the grid world + (e.g., output of `openssl x509 -in $FILE -noout -subject`), run + the OpenSSL subject hash generation algorithm. + + This is done by calculating the SHA-1 sum of the canonical form of the + X509 certificate's subject. Formatting is a bit like this: + + SEQUENCE: + SET: + SEQUENCE: + OID + UTF8String + + All the UTF-8 values should be converted to lower-case and multiple + spaces should be replaced with a single space. That is, "Foo Bar" + should be substituted with "foo bar" for the canonical form. + """ + dn_split_re = re.compile("/([A-Za-z]+)=") + + encoder = asn1.Encoder() + encoder.start() + info = dn_split_re.split(dn)[1:] + for attr, val in zip(info[0::2], info[1::2]): + oid = __oid_map.get(attr) + if not oid: + raise ValueError("OID for attribute {} is not known.".format(attr)) + encoder.enter(0x11) + encoder.enter(0x10) + encoder.write(oid, 0x06) + encoder.write(val.lower().encode("utf-8"), 0x0c) + encoder.leave() + encoder.leave() + output = encoder.output() + hash_obj = hashlib.sha1() + hash_obj.update(output) + digest = hash_obj.digest() + int_summary = digest[0] | digest[1] << 8 | digest[2] << 16 | digest[3] << 24 + return "%08lx.0" % int_summary diff --git a/template-resourcegroup.yaml b/template-resourcegroup.yaml index c7a28b645..a9f51a54f 100644 --- a/template-resourcegroup.yaml +++ b/template-resourcegroup.yaml @@ -122,6 +122,7 @@ Resources: ### WLCGInformation (optional) is only for resources that are part of the WLCG # WLCGInformation: # APELNormalFactor: 0.0 + # HEPScore23Percentage: 0.0 # AccountingName: # HEPSPEC: 0 # InteropAccounting: true diff --git a/template-virtual-organization.yaml b/template-virtual-organization.yaml index 5eff08ae3..13ba71364 100644 --- a/template-virtual-organization.yaml +++ b/template-virtual-organization.yaml @@ -106,7 +106,7 @@ SupportURL: http://www.usatlas.bnl.gov/index.shtml # Namespaces: # - Path: //PUBLIC: # Authorizations: -# - ANY +# - PUBLIC # AllowedOrigins: # - # - ... diff --git a/topology/American Museum of Natural History/AMNH/AMNH_downtime.yaml b/topology/American Museum of Natural History/AMNH/AMNH_downtime.yaml index 8f4c34e74..695da2334 100644 --- a/topology/American Museum of Natural History/AMNH/AMNH_downtime.yaml +++ b/topology/American Museum of Natural History/AMNH/AMNH_downtime.yaml @@ -74,3 +74,36 @@ ResourceName: OSG_US_AMNH_ARES Services: - CE +- Class: UNSCHEDULED + ID: 1374126383 + Description: Conversion issues + Severity: Outage + StartTime: Dec 30, 2022 15:03 +0000 + EndTime: Jan 06, 2023 17:00 +0000 + CreatedTime: Dec 30, 2022 15:03 +0000 + ResourceName: AMNH-ARES + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1402834530 + Description: Slurm Update + Severity: Outage + StartTime: Feb 07, 2023 14:00 +0000 + EndTime: Feb 08, 2023 14:00 +0000 + CreatedTime: Feb 01, 2023 20:30 +0000 + ResourceName: AMNH-ARES + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1487299724 + Description: HW maintenance + Severity: Outage + StartTime: May 15, 2023 13:00 +0000 + EndTime: May 17, 2023 09:00 +0000 + CreatedTime: May 10, 2023 14:46 +0000 + ResourceName: AMNH-ARES + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/Arizona State University/ASU Research Computing/ASU-Sol.yaml b/topology/Arizona State University/ASU Research Computing/ASU-Sol.yaml new file mode 100644 index 000000000..cc6476878 --- /dev/null +++ b/topology/Arizona State University/ASU Research Computing/ASU-Sol.yaml @@ -0,0 +1,139 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: Arizona State University, ASU Research Computing, Sol cluster + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1360 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + ASU-Sol-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE serving ASU-Sol + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1459 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: asu-sol-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + Tags: + - CC* + # - + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # HEPScore23Percentage: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # ... diff --git a/topology/Baylor University/Baylor University/Baylor-Kodiak_downtime.yaml b/topology/Baylor University/Baylor University/Baylor-Kodiak_downtime.yaml index a34a03f6b..9b9d5271a 100644 --- a/topology/Baylor University/Baylor University/Baylor-Kodiak_downtime.yaml +++ b/topology/Baylor University/Baylor University/Baylor-Kodiak_downtime.yaml @@ -20,3 +20,37 @@ Services: - CE # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1523857764 + Description: Downtime for OSG software update + Severity: Intermittent Outage + StartTime: Jun 22, 2023 13:00 +0000 + EndTime: Jun 22, 2023 16:00 +0000 + CreatedTime: Jun 21, 2023 22:16 +0000 + ResourceName: Baylor-Kodiak-CE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1553875428 + Description: Switching to new server + Severity: Intermittent Outage + StartTime: Jul 26, 2023 16:15 +0000 + EndTime: Jul 26, 2023 16:45 +0000 + CreatedTime: Jul 26, 2023 16:05 +0000 + ResourceName: Baylor-Kodiak-CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1570148706 + Description: Maintenance + Severity: Outage + StartTime: Aug 14, 2023 14:00 +0000 + EndTime: Aug 19, 2023 04:00 +0000 + CreatedTime: Aug 14, 2023 12:07 +0000 + ResourceName: Baylor-Kodiak-CE + Services: + - CE + - Squid +# --------------------------------------------------------- diff --git a/topology/Boston University/Boston University ATLAS Tier2/BU_ATLAS_Tier2.yaml b/topology/Boston University/Boston University ATLAS Tier2/BU_ATLAS_Tier2.yaml index b09d47f0e..eac069907 100644 --- a/topology/Boston University/Boston University ATLAS Tier2/BU_ATLAS_Tier2.yaml +++ b/topology/Boston University/Boston University ATLAS Tier2/BU_ATLAS_Tier2.yaml @@ -3,7 +3,7 @@ GroupID: 8 Production: true Resources: NET2: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -48,7 +48,7 @@ Resources: StorageCapacityMin: 2300 TapeCapacity: 0 NET2v6: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -93,7 +93,7 @@ Resources: StorageCapacityMin: 2300 TapeCapacity: 0 net2.bu.edu-squid: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -118,7 +118,7 @@ Resources: VOOwnership: ATLAS: 100 perfSONAR-NET2-bw: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -145,7 +145,7 @@ Resources: VOOwnership: ATLAS: 100 perfSONAR-NET2-lat: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -172,7 +172,7 @@ Resources: VOOwnership: ATLAS: 100 perfSONAR_BU: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -199,7 +199,7 @@ Resources: VOOwnership: ATLAS: 100 SQUID_SLATE_BU: - Active: true + Active: false ContactLists: Administrative Contact: Primary: diff --git a/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS.yaml b/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS.yaml index 8e4dac1f3..8f34e8797 100644 --- a/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS.yaml +++ b/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS.yaml @@ -28,7 +28,7 @@ Resources: Description: Compute Element Details: hidden: false - sam_uri: htcondor://gridgk02.racf.bnl.gov + sam_uri: htcondor://gridgk01.racf.bnl.gov VOOwnership: ATLAS: 100 WLCGInformation: @@ -275,9 +275,9 @@ Resources: APELNormalFactor: 12.69 AccountingName: BNL_ATLAS_1 HEPSPEC: 0 - InteropAccounting: true - InteropBDII: true - InteropMonitoring: true + InteropAccounting: false + InteropBDII: false + InteropMonitoring: false KSI2KMax: 0 KSI2KMin: 0 StorageCapacityMax: 0 diff --git a/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS_downtime.yaml b/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS_downtime.yaml index c15ecb418..b8ddecb4c 100644 --- a/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS_downtime.yaml +++ b/topology/Brookhaven National Laboratory/BNL ATLAS Tier1/BNL-ATLAS_downtime.yaml @@ -906,4 +906,201 @@ Services: - GridFtp # --------------------------------------------------------- - +- Class: SCHEDULED + ID: 1319710097 + Description: Downtime HPSS software upgrade + Severity: Outage + StartTime: Dec 19, 2022 05:00 +0000 + EndTime: Dec 21, 2022 02:00 +0000 + CreatedTime: Oct 28, 2022 15:30 +0000 + ResourceName: BNL_ATLAS_SE + Services: + - SRMv2.tape +- Class: SCHEDULED + ID: 1423358387 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_1 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358388 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358389 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_3 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358390 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_4 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358391 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_6 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358392 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_7 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358393 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_8 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358394 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_CVMFS_Squid + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358395 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_Frontier_Squid + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358396 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_SE + Services: + - SRMv2.disk + - SRMv2.tape +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358397 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_SE_AWS_East + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358398 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_SE_AWS_West + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358399 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_SE_AWS_West2 + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358400 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: BNL_ATLAS_SE_GRIDFTP + Services: + - WebDAV +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358401 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: lhcmon-bnl + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358402 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: lhcperfmon-bnl + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1423358403 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 08, 2023 14:00 +0000 + EndTime: Mar 08, 2023 20:00 +0000 + CreatedTime: Feb 25, 2023 14:37 +0000 + ResourceName: ps-development + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- diff --git a/topology/Brookhaven National Laboratory/BNL-SDCC/BNL-SDCC.yaml b/topology/Brookhaven National Laboratory/BNL-SDCC/BNL-SDCC.yaml index 03c893801..7ce97b43a 100644 --- a/topology/Brookhaven National Laboratory/BNL-SDCC/BNL-SDCC.yaml +++ b/topology/Brookhaven National Laboratory/BNL-SDCC/BNL-SDCC.yaml @@ -51,6 +51,126 @@ Resources: Services: CE: Description: Shared Pool Compute Element + BNL-SDCC-CE03: + Active: true + Description: This is a compute cluster for SDCC. + ID: 1427 + ContactLists: + Administrative Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + + Security Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + FQDN: spce03.sdcc.bnl.gov + Services: + CE: + Description: Shared Pool Compute Element + BNL-SDCC-CE04: + Active: true + Description: This is a compute cluster for SDCC. + ID: 1428 + ContactLists: + Administrative Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + + Security Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + FQDN: spce04.sdcc.bnl.gov + Services: + CE: + Description: Shared Pool Compute Element + BNL-SDCC-CE05: + Active: true + Description: This is a compute cluster for SDCC. + ID: 1429 + ContactLists: + Administrative Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + + Security Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + FQDN: spce05.sdcc.bnl.gov + Services: + CE: + Description: Shared Pool Compute Element + BNL-SDCC-CE05: + Active: true + Description: This is a compute cluster for SDCC. + ID: 1430 + ContactLists: + Administrative Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + + Security Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + FQDN: spce05.sdcc.bnl.gov + Services: + CE: + Description: Shared Pool Compute Element + BNL-SDCC-CE06: + Active: true + Description: This is a compute cluster for SDCC. + ID: 1431 + ContactLists: + Administrative Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + + Security Contact: + Primary: + ID: b39de31776fc01735eff9678a851c2126a3680be + Name: Doug Benjamin + Secondary: + ID: a688fe1904cfc91c2c5529eb898a13f9ebfbadbe + Name: Xin Zhao + FQDN: spce06.sdcc.bnl.gov + Services: + CE: + Description: Shared Pool Compute Element BNL-SUBMIT-01: Active: true Description: This is a submit host for SDCC. diff --git a/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2.yaml b/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2.yaml index 1cd0277ec..a90a758b8 100644 --- a/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2.yaml +++ b/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2.yaml @@ -12,6 +12,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -19,6 +22,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: US CMS Tier-2 site at Caltech FQDN: cit-gatekeeper.ultralight.org FQDNAliases: @@ -53,6 +59,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -60,6 +69,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: CE for Caltech CMS Tier2 facility. FQDN: cit-gatekeeper2.ultralight.org FQDNAliases: @@ -94,6 +106,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -101,6 +116,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: CE for Caltech CMS Tier2 facility. FQDN: cit-gatekeeper3.ultralight.org FQDNAliases: @@ -135,6 +153,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -142,6 +163,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Scheduler for Local users of Caltech CMS Group FQDN: login-1.tier2 ID: 1055 @@ -174,6 +198,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -181,6 +208,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Scheduler for Local users of Caltech CMS Group FQDN: login-1.hep.caltech.edu ID: 1064 @@ -213,6 +243,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -220,6 +253,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Scheduler for Local users of Caltech CMS Group FQDN: login-2.hep.caltech.edu ID: 1062 @@ -252,6 +288,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -259,6 +298,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Scheduler for Local users of Caltech CMS Group FQDN: login-3.hep.caltech.edu ID: 1063 @@ -291,6 +333,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -298,6 +343,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Squid service for frontier and cvmfs FQDN: proxy-1.ultralight.org ID: 688 @@ -315,6 +363,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -322,6 +373,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Second Squid service for frontier and cvmfs FQDN: proxy-2.ultralight.org ID: 225 @@ -340,6 +394,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -347,6 +404,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Bandwidth PerfSonar node FQDN: perfsonar.ultralight.org ID: 610 @@ -367,6 +427,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -374,6 +437,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Latency host for PerfSonar. FQDN: perfsonar2.ultralight.org ID: 609 @@ -394,6 +460,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -401,6 +470,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Xrootd Redirector FQDN: xrootd.ultralight.org ID: 1122 @@ -420,6 +492,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Security Contact: Primary: ID: 6895284f54fb41f9daafc4b6d0a7ea42c57e31be @@ -427,6 +502,9 @@ Resources: Secondary: ID: 5e2a78ef254d5b584751f4de9cd490287301e8e7 Name: Andres Moya Ignatov + Tertiary: + ID: OSG1000240 + Name: Sravya Uppalapati Description: Xrootd Redirector FQDN: xrootd-redir.ultralight.org ID: 1155 diff --git a/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2_downtime.yaml b/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2_downtime.yaml index dc248a5b9..3ce08a270 100644 --- a/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2_downtime.yaml +++ b/topology/California Institute of Technology/Caltech CMS Tier2/CIT_CMS_T2_downtime.yaml @@ -1463,3 +1463,312 @@ Services: - XRootD component +# ------------------------------------------ +# Storage issues (either power or hardware, +# need physical presence.) +- Class: UNSCHEDULED + ID: 997651581 + Description: Storage Issues + Severity: Outage + StartTime: Nov 30, 2022 22:00 -0700 + EndTime: Dec 1, 2022 17:00 -0700 + CreatedTime: Nov 30, 2022 22:00 -0700 + ResourceName: CIT-CMS-T2-XRD + Services: + - XRootD component + +- Class: UNSCHEDULED + ID: 997651582 + Description: Storage Issues + Severity: Outage + StartTime: Nov 30, 2022 22:00 -0700 + EndTime: Dec 1, 2022 17:00 -0700 + CreatedTime: Nov 30, 2022 22:00 -0700 + ResourceName: CIT_CMS_T2_XRD_Ceph + Services: + - XRootD component + +# ------------------------------------------ +# Testing migration to OSG 3.6 +- Class: SCHEDULED + ID: 997651587 + Description: Migration to OSG 3.6 + Severity: Outage + StartTime: Jan 17, 2023 07:00 -0800 + EndTime: Feb 01, 2023 09:00 -0800 + CreatedTime: Jan 13, 2023 21:00 -0800 + ResourceName: CIT_CMS_T2C + Services: + - CE + +# ------------------------------------------ +# Testing migration to OSG 3.6 +- Class: SCHEDULED + ID: 997651588 + Description: Migration to OSG 3.6 + Severity: Outage + StartTime: Feb 20, 2023 07:00 -0800 + EndTime: Feb 22, 2023 07:00 -0800 + CreatedTime: Feb 16, 2023 09:00 -0800 + ResourceName: CIT_CMS_T2B + Services: + - CE + +# ------------------------------------------ +# Testing migration to OSG 3.6 +- Class: SCHEDULED + ID: 997651593 + Description: Migration to OSG 3.6 + Severity: Outage + StartTime: Feb 24, 2023 07:00 -0800 + EndTime: Feb 27, 2023 07:00 -0800 + CreatedTime: Feb 22, 2023 11:30 -0800 + ResourceName: CIT_CMS_T2 + Services: + - CE + + + +# ----------------------------------------- +# CENIC major failure start at 1235 PST time 8:35 PM UTC +# CENIC is our primary campus internet services provider +# [CENIC NOC-698264] Backbone OUTAGE + +- Class: UNSCHEDULED + ID: 997651594 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT_CMS_T2 + Services: + - CE + +- Class: UNSCHEDULED + ID: 997651595 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT_CMS_T2B + Services: + - CE + +- Class: UNSCHEDULED + ID: 997651596 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT_CMS_T2C + Services: + - CE + +- Class: UNSCHEDULED + ID: 997651597 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT_CMS_T2_Squid + Services: + - Squid + +- Class: UNSCHEDULED + ID: 997651598 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT_CMS_T2_2_Squid + Services: + - Squid + +- Class: UNSCHEDULED + ID: 997651599 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT-CMS-T2-XRD + Services: + - XRootD component + +- Class: UNSCHEDULED + ID: 997651600 + Description: ISP (CENIC) backbone outage [CENIC NOC-698264] + Severity: Outage + StartTime: Mar 2, 2023 12:34 -0800 + EndTime: Mar 3, 2023 12:34 -0800 + CreatedTime: Mar 2, 2023 16:54 -0800 + ResourceName: CIT_CMS_T2_XRD_Ceph + Services: + - XRootD component + +# ---------------------------------------------------------- +# Config changes on switch requires restart + +- Class: SCHEDULED + ID: 997651601 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 15:10 -0700 + ResourceName: CIT_CMS_T2 + Services: + - CE + +- Class: SCHEDULED + ID: 997651602 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 15:10 -0700 + ResourceName: CIT_CMS_T2B + Services: + - CE + +- Class: SCHEDULED + ID: 997651603 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 15:10 -0700 + ResourceName: CIT_CMS_T2C + Services: + - CE + +- Class: SCHEDULED + ID: 997651604 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 16:10 -0700 + ResourceName: CIT_CMS_T2_Squid + Services: + - Squid + +- Class: SCHEDULED + ID: 997651605 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 16:10 -0700 + ResourceName: CIT_CMS_T2_2_Squid + Services: + - Squid + +- Class: SCHEDULED + ID: 997651606 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 16:10 -0700 + ResourceName: CIT-CMS-T2-XRD + Services: + - XRootD component + +- Class: SCHEDULED + ID: 997651607 + Description: Restart switch + Severity: Outage + StartTime: Apr 5, 2023 09:00 -0700 + EndTime: Apr 5, 2023 13:00 -0700 + CreatedTime: Apr 3, 2023 16:10 -0700 + ResourceName: CIT_CMS_T2_XRD_Ceph + Services: + - XRootD component + + +# ---------------------------------------------------------- +# CEPH (storage) node maintenance + +- Class: SCHEDULED + ID: 997651608 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT_CMS_T2 + Services: + - CE + +- Class: SCHEDULED + ID: 997651609 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT_CMS_T2B + Services: + - CE + +- Class: SCHEDULED + ID: 997651610 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT_CMS_T2C + Services: + - CE + +- Class: SCHEDULED + ID: 997651611 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT_CMS_T2_Squid + Services: + - Squid + +- Class: SCHEDULED + ID: 997651612 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT_CMS_T2_2_Squid + Services: + - Squid + +- Class: SCHEDULED + ID: 997651613 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT-CMS-T2-XRD + Services: + - XRootD component + +- Class: SCHEDULED + ID: 997651614 + Description: CEPH (storage) node maintenance + Severity: Outage + StartTime: May 22, 2023 09:00 -0700 + EndTime: May 22, 2023 18:00 -0700 + CreatedTime: May 17, 2023 12:00 -0700 + ResourceName: CIT_CMS_T2_XRD_Ceph + Services: + - XRootD component + diff --git a/topology/California Institute of Technology/Caltech LIGO/CIT_LIGO.yaml b/topology/California Institute of Technology/Caltech LIGO/CIT_LIGO.yaml index 6cc94df1b..8071ab85d 100644 --- a/topology/California Institute of Technology/Caltech LIGO/CIT_LIGO.yaml +++ b/topology/California Institute of Technology/Caltech LIGO/CIT_LIGO.yaml @@ -19,6 +19,46 @@ Resources: Description: StashCache Origin server AllowedVOs: - LIGO + CIT_LIGO_ORIGIN_IFO: + Active: true + Description: This serves proprietary gravitational-wave data from the LIGO interferometers + ContactLists: + Administrative Contact: + Primary: + Name: Stuart Anderson + ID: c50e7cc9d0086272ef995fb76461612d40c70435 + Security Contact: + Primary: + Name: Stuart Anderson + ID: c50e7cc9d0086272ef995fb76461612d40c70435 + FQDN: origin-ifo.ligo.caltech.edu + DN: /DC=org/DC=incommon/C=US/ST=California/O=California Institute of Technology/CN=origin-ifo.ligo.caltech.edu + ID: 1457 + Services: + XRootD origin server: + Description: StashCache Origin server + AllowedVOs: + - LIGO + CIT_LIGO_ORIGIN_SHARED: + Active: true + Description: This serves proprietary data shared among LIGO, Virgo, and KAGRA + ContactLists: + Administrative Contact: + Primary: + Name: Stuart Anderson + ID: c50e7cc9d0086272ef995fb76461612d40c70435 + Security Contact: + Primary: + Name: Stuart Anderson + ID: c50e7cc9d0086272ef995fb76461612d40c70435 + FQDN: origin-shared.ligo.caltech.edu + DN: /DC=org/DC=incommon/C=US/ST=California/O=California Institute of Technology/CN=origin-shared.ligo.caltech.edu + ID: 1458 + Services: + XRootD origin server: + Description: StashCache Origin server + AllowedVOs: + - LIGO CIT_LIGO_SQUID1: ContactLists: Administrative Contact: @@ -70,4 +110,23 @@ Resources: Description: Frontier-squid proxy server AllowedVOs: - LIGO + CIT_LIGO_STASHCACHE: + Active: true + ContactLists: + Administrative Contact: + Primary: + Name: Stuart Anderson + ID: c50e7cc9d0086272ef995fb76461612d40c70435 + Security Contact: + Primary: + Name: Stuart Anderson + ID: c50e7cc9d0086272ef995fb76461612d40c70435 + FQDN: stashcache.ligo.caltech.edu + DN: /DC=org/DC=incommon/C=US/ST=California/O=California Institute of Technology/CN=stashcache.ligo.caltech.edu + ID: 1461 + Services: + XRootD cache server: + Description: OSDF Stashcache + AllowedVOs: + - LIGO SupportCenter: Advanced LIGO diff --git a/topology/Cardiff University/Cardiff Computing Cluster/CardiffPRPCachingInfrastructure.yaml b/topology/Cardiff University/Cardiff Computing Cluster/CardiffPRPCachingInfrastructure.yaml index 816d097ad..857cc3811 100644 --- a/topology/Cardiff University/Cardiff Computing Cluster/CardiffPRPCachingInfrastructure.yaml +++ b/topology/Cardiff University/Cardiff Computing Cluster/CardiffPRPCachingInfrastructure.yaml @@ -4,19 +4,19 @@ GroupDescription: Stashcaches located at Cardiff University and handled through GroupID: 511 Resources: Stashcache-Cardiff: - Active: true + Active: false Description: Cardiff StashCache ID: 1007 ContactLists: Administrative Contact: Primary: - Name: Diego Davila - ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Name: Fabio Andrijauskas + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: - Name: Diego Davila - ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Name: Fabio Andrijauskas + ID: OSG1000162 FQDN: stashcache.gravity.cf.ac.uk DN: /C=UK/O=eScience/OU=Cardiff/L=WeSC/CN=stashcache.gravity.cf.ac.uk Services: @@ -24,3 +24,24 @@ Resources: Description: Cardiff PRP Caching Service AllowedVOs: - LIGO + + CARDIFF_UK_OSDF_CACHE: + Active: true + Description: Cardiff OSDF cache + ID: 1415 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: cf-ac-uk-cache.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=cf-ac-uk-cache.nationalresearchplatform.org + Services: + XRootD cache server: + Description: Cardiff PRP OSDF cache Service + AllowedVOs: + - LIGO diff --git a/topology/Clarkson University/Clarkson - ACRES/Clarkson-ACRES.yaml b/topology/Clarkson University/Clarkson - ACRES/Clarkson-ACRES.yaml index 1fb279cc0..2881a6763 100644 --- a/topology/Clarkson University/Clarkson - ACRES/Clarkson-ACRES.yaml +++ b/topology/Clarkson University/Clarkson - ACRES/Clarkson-ACRES.yaml @@ -19,7 +19,7 @@ Resources: Clarkson-ACRES: # Active is true if the resource is accepting requests, and false otherwise. # When first registering a resource, set this to false. Set it to true when it's ready for production. - Active: true + Active: false # Description is a long description of the resource; may be multiple lines Description: Hosted CE serving Clarkson-ACRES # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` @@ -171,7 +171,7 @@ Resources: Services: CE: # Description is a brief description of the service - Description: Clarckson Acres CE2 hosted CE + Description: Clarkson Acres CE2 hosted CE ### Details (optional) # Details: # # hidden diff --git a/topology/Clemson University/Clemson-Palmetto/Clemson-Palmetto.yaml b/topology/Clemson University/Clemson-Palmetto/Clemson-Palmetto.yaml index a377a10dd..d2e5d91d7 100644 --- a/topology/Clemson University/Clemson-Palmetto/Clemson-Palmetto.yaml +++ b/topology/Clemson University/Clemson-Palmetto/Clemson-Palmetto.yaml @@ -66,4 +66,86 @@ Resources: KSI2KMin: 0 StorageCapacityMax: 0 StorageCapacityMin: 0 + Clemson-Palmetto-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE for Clemson-Palmetto + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1413 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: clemson-palmetto-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Celmson-Palmetto CE1 hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + #Tags: + # - + # - + SupportCenter: Community Support Center diff --git a/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar.yaml b/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar.yaml index 7c815bccf..6b975e402 100644 --- a/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar.yaml +++ b/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar.yaml @@ -5,7 +5,7 @@ GroupID: 1095 GroupDescription: The Compute Canada Cedar cluster Resources: ComputeCanada-Cedar: - ID: 1103 + ID: 1351 Description: The Hosted CE serving ComputeCanada-Cedar ContactLists: Administrative Contact: @@ -26,9 +26,29 @@ Resources: Primary: Name: Richard T Jones ID: 650bf84a5cf49caf504fed22ce07b98580c6fa12 - FQDN: hosted-ce28.opensciencegrid.org + FQDN: computecanada-cedar-ce1.svc.opensciencegrid.org Services: CE: Description: ComputeCanada-Cedar Hosted CE Details: hidden: false + ComputeCanada-Cedar-Cache: + Active: true + Description: Compute Canada Cedar Cluster at SFU - StashCache XRootD cache server + ID: 1407 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000281 + Name: Leslie Groer + Security Contact: + Primary: + ID: OSG1000281 + Name: Leslie Groer + FQDN: osg-stash-sfu-computecanada-ca.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=osg-stash-sfu-computecanada-ca.nationalresearchplatform.org + Services: + XRootD cache server: + Description: StashCache cache server + AllowedVOs: + - ANY diff --git a/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar_downtime.yaml b/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar_downtime.yaml new file mode 100644 index 000000000..b6deeb0dc --- /dev/null +++ b/topology/Compute Canada/ComputeCanada - Cedar/ComputeCanada-Cedar_downtime.yaml @@ -0,0 +1,11 @@ +- Class: SCHEDULED + ID: 1407058799 + Description: configuring + Severity: Outage + StartTime: Feb 06, 2023 20:30 +0000 + EndTime: Feb 28, 2023 20:30 +0000 + CreatedTime: Feb 06, 2023 17:51 +0000 + ResourceName: ComputeCanada-Cedar-Cache + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Dutch National e-Infrastructure/SURF-ICT/SITE.yaml b/topology/Dutch National e-Infrastructure/SURF-ICT/SITE.yaml new file mode 100644 index 000000000..1a7397344 --- /dev/null +++ b/topology/Dutch National e-Infrastructure/SURF-ICT/SITE.yaml @@ -0,0 +1,8 @@ +LongName: SURF Amsterdam MS4 services +Description: The ICT cooperative of teaching and research in the Netherlands +ID: 10348 +AddressLine1: Science Park 140 +City: Amsterdam +Country: Netherlands +Latitude: 52.356730 +Longitude: 4.954590 diff --git a/topology/Dutch National e-Infrastructure/SURF-ICT/SURFMS4.yaml b/topology/Dutch National e-Infrastructure/SURF-ICT/SURFMS4.yaml new file mode 100644 index 000000000..0c57c0fb5 --- /dev/null +++ b/topology/Dutch National e-Infrastructure/SURF-ICT/SURFMS4.yaml @@ -0,0 +1,31 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Infrastructure for SURF-MS4 +GroupID: 1358 +Resources: + SURF_MS4_OSDF_ORIGIN: + Active: false + Description: Origin for SURF-MS4 + ID: 1453 + ContactLists: + Administrative Contact: + Primary: + Name: Jasmin Čolo + ID: OSG1000312 + Secondary: + ID: OSG1000162 + Name: Fabio Andrijauskas + Security Contact: + Primary: + Name: Jasmin Čolo + ID: OSG1000312 + Secondary: + ID: OSG1000162 + Name: Fabio Andrijauskas + FQDN: osg-origin.ms4.surfsara.nl + DN: /C=NL/ST=Utrecht/O=SURF B.V./CN=osg-origin.ms4.surfsara.nl + Services: + XRootD origin server: + Description: Origin for SURF-MS4 + AllowedVOs: + - ANY diff --git a/topology/Energy Sciences Network/Amsterdam/EsnetAmsterdam.yaml b/topology/Energy Sciences Network/Amsterdam/EsnetAmsterdam.yaml new file mode 100644 index 000000000..b81bda81b --- /dev/null +++ b/topology/Energy Sciences Network/Amsterdam/EsnetAmsterdam.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the ESnet Amsterdam Point of Presence +GroupID: 1356 +Resources: + AMSTERDAM_ESNET_OSDF_CACHE: + Active: true + Description: ESnet Amasterdam Cache + ID: 1450 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: amst-osdf-xcache01.es.net + DN: /DC=org/DC=incommon/C=US/ST=California/O=Energy Sciences Network/CN=amst-osdf-xcache01.es.net + Services: + XRootD cache server: + Description: ESnet Amsterdam Cache + AllowedVOs: + - LIGO diff --git a/topology/Energy Sciences Network/Amsterdam/SITE.yaml b/topology/Energy Sciences Network/Amsterdam/SITE.yaml new file mode 100644 index 000000000..002176579 --- /dev/null +++ b/topology/Energy Sciences Network/Amsterdam/SITE.yaml @@ -0,0 +1,10 @@ +AddressLine1: Science Park 610 +City: Amsterdam +Country: Netherlands +Description: ESnet- Amsterdam +ID: 10364 +Latitude: 52.35467570 +LongName: Energy Sciences Network - Amsterdam +Longitude: 4.95911940 +State: XH +Zipcode: 'AM3:01:031101' diff --git a/topology/Energy Sciences Network/FACILITY.yaml b/topology/Energy Sciences Network/FACILITY.yaml new file mode 100644 index 000000000..d1603ca2f --- /dev/null +++ b/topology/Energy Sciences Network/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10211 diff --git a/topology/Energy Sciences Network/London/ESnetLondon.yaml b/topology/Energy Sciences Network/London/ESnetLondon.yaml new file mode 100644 index 000000000..5fe582291 --- /dev/null +++ b/topology/Energy Sciences Network/London/ESnetLondon.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the ESnet London Point of Presence +GroupID: 1357 +Resources: + LONDON_ESNET_OSDF_CACHE: + Active: true + Description: ESnet London Cache + ID: 1451 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: lond-osdf-xcache01.es.net + DN: /DC=org/DC=incommon/C=US/ST=California/O=Energy Sciences Network/CN=lond-osdf-xcache01.es.net + Services: + XRootD cache server: + Description: Internet2 London Cache + AllowedVOs: + - LIGO diff --git a/topology/Energy Sciences Network/London/SITE.yaml b/topology/Energy Sciences Network/London/SITE.yaml new file mode 100644 index 000000000..5de7baf57 --- /dev/null +++ b/topology/Energy Sciences Network/London/SITE.yaml @@ -0,0 +1,11 @@ +AddressLine1: IBX LD8 6/7/8/9 Harbour 6/7 Harbour Exchange Square +AddressLine2: +City: London +Country: United Kingdom +Description: ESnet - London +ID: 10365 +Latitude: 51.49806950 +LongName: Energy Sciences Network - London +Longitude: -0.01436050 +State: Limeharbour +Zipcode: '60439' diff --git a/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1.yaml b/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1.yaml index 09c774c7e..afd31caf7 100644 --- a/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1.yaml +++ b/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1.yaml @@ -265,6 +265,9 @@ Resources: Active: true ContactLists: Administrative Contact: + Primary: + ID: fbc689042bf0b68df85561edb1a1fb33e1c799a3 + Name: David Alexander Mason Secondary: ID: 8489f9d11ec9723ae9f11619d325dbfa5516397c Name: Anthony Tiradani @@ -296,6 +299,9 @@ Resources: Active: true ContactLists: Administrative Contact: + Primary: + ID: fbc689042bf0b68df85561edb1a1fb33e1c799a3 + Name: David Alexander Mason Secondary: ID: 8489f9d11ec9723ae9f11619d325dbfa5516397c Name: Anthony Tiradani diff --git a/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1_downtime.yaml b/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1_downtime.yaml index 59d865886..092cf9107 100644 --- a/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1_downtime.yaml +++ b/topology/Fermi National Accelerator Laboratory/FNAL USCMS Tier1/USCMS-FNAL-WC1_downtime.yaml @@ -725,5 +725,183 @@ - FTS - SRMv2 # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1262675818 + Description: Network degradation on head node + Severity: Severe + StartTime: Aug 23, 2022 14:00 +0000 + EndTime: Aug 23, 2022 16:00 +0000 + CreatedTime: Aug 23, 2022 15:13 +0000 + ResourceName: USCMS-FNAL-WC1-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1298061685 + Description: FTS server upgrade + Severity: No Significant Outage Expected + StartTime: Oct 11, 2022 13:00 +0000 + EndTime: Oct 11, 2022 17:00 +0000 + CreatedTime: Oct 06, 2022 14:09 +0000 + ResourceName: USCMS-FNAL-WC1-SE + Services: + - FTS +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1298061998 + Description: FTS server upgrade (swap back to original server) + Severity: No Significant Outage Expected + StartTime: Oct 12, 2022 13:00 +0000 + EndTime: Oct 12, 2022 17:00 +0000 + CreatedTime: Oct 06, 2022 14:09 +0000 + ResourceName: USCMS-FNAL-WC1-SE + Services: + - FTS +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392351828 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:19 +0000 + ResourceName: USCMS-FNAL-WC1-SE + Services: + - FTS + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392352072 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:20 +0000 + ResourceName: USCMS-FNAL-WC1-SE2 + Services: + - FTS + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392352565 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:20 +0000 + ResourceName: USCMS-FNAL-WC1-CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392353588 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:22 +0000 + ResourceName: USCMS-FNAL-WC1-CE2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392353065 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:21 +0000 + ResourceName: USCMS-FNAL-WC1-CE3 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392353955 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:23 +0000 + ResourceName: USCMS-FNAL-WC1-CE4 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1392354391 + Description: Kernel reboots, general maintenance and FTS upgrade + Severity: Severe + StartTime: Jan 24, 2023 14:00 +0000 + EndTime: Jan 24, 2023 23:00 +0000 + CreatedTime: Jan 20, 2023 17:23 +0000 + ResourceName: USCMS-FNAL-WC1-OPP1 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1401739041 + Description: FTS server swap-back + Severity: Intermittent Outage + StartTime: Feb 01, 2023 14:00 +0000 + EndTime: Feb 01, 2023 23:00 +0000 + CreatedTime: Jan 31, 2023 13:05 +0000 + ResourceName: USCMS-FNAL-WC1-SE + Services: + - FTS +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1440908245 + Description: dCache upgrade + Severity: Outage + StartTime: Mar 21, 2023 13:00 +0000 + EndTime: Mar 21, 2023 22:30 +0000 + CreatedTime: Mar 17, 2023 22:07 +0000 + ResourceName: USCMS-FNAL-WC1-SE2 + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1456251254 + Description: Replacing the CE hardware + Severity: Outage + StartTime: Apr 07, 2023 23:00 +0000 + EndTime: Apr 12, 2023 20:00 +0000 + CreatedTime: Apr 04, 2023 16:18 +0000 + ResourceName: USCMS-FNAL-WC1-CE3 + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1463377996 + Description: CE failing pilots, need a downtime to investigate + Severity: Severe + StartTime: Apr 12, 2023 22:00 +0000 + EndTime: Apr 14, 2023 16:00 +0000 + CreatedTime: Apr 12, 2023 22:16 +0000 + ResourceName: USCMS-FNAL-WC1-CE3 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1467303096 + Description: dCache upgrade + Severity: Severe + StartTime: Apr 18, 2023 13:00 +0000 + EndTime: Apr 18, 2023 22:00 +0000 + CreatedTime: Apr 17, 2023 11:18 +0000 + ResourceName: USCMS-FNAL-WC1-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1540089671 + Description: CMS Overfilled resource + Severity: Severe + StartTime: Jul 09, 2023 12:00 +0000 + EndTime: Jul 11, 2023 0:00 +0000 + CreatedTime: Jul 10, 2023 23:09 +0000 + ResourceName: USCMS-FNAL-WC1-SE2 + Services: + - SRMv2 +# --------------------------------------------------------- diff --git a/topology/Fermi National Accelerator Laboratory/FermiGrid/FNAL_OSDF.yaml b/topology/Fermi National Accelerator Laboratory/FermiGrid/FNAL_OSDF.yaml new file mode 100644 index 000000000..b2413f1d3 --- /dev/null +++ b/topology/Fermi National Accelerator Laboratory/FermiGrid/FNAL_OSDF.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Fermilab origins used as redirectors for xCache +GroupID: 1354 +Resources: + FNAL_OSDF_ORIGIN: + Active: true + Description: This is one of the Fermilab xrootd server redirectors. + ID: 1444 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000162 + Name: Fabio Andrijauskas + Security Contact: + Primary: + ID: 28e35fff676197be119af149e37c24b444179d0a + Name: Jeny Teheran + FQDN: osdforigin.fnal.gov + Services: + XRootD origin server: + Description: Stash Origin + AllowedVOs: + - ANY + diff --git a/topology/Florida International University/FIU-IRCC/FIU-IRCC.yaml b/topology/Florida International University/FIU-IRCC/FIU-IRCC.yaml new file mode 100644 index 000000000..346df7a9b --- /dev/null +++ b/topology/Florida International University/FIU-IRCC/FIU-IRCC.yaml @@ -0,0 +1,32 @@ +GroupDescription: Florida International University Instructional Research and Computing Center +GroupID: 1342 +Production: true +Resources: + FIU-IRCC-CE1: + Active: true + Description: This is a Hosted CE for FIU IRCC group + ID: 1414 + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + + Security Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + + FQDN: fiu-ircc-ce1.svc.opensciencegrid.org + + Services: + CE: + Description: Hosted CE for FIU-IRCC + +SupportCenter: Self Supported diff --git a/topology/Florida International University/FIU-IRCC/SITE.yaml b/topology/Florida International University/FIU-IRCC/SITE.yaml new file mode 100644 index 000000000..b85cd0a39 --- /dev/null +++ b/topology/Florida International University/FIU-IRCC/SITE.yaml @@ -0,0 +1,12 @@ +LongName: FIU HPC Division of Information Technology +Description: FIU Panther cluster sponsored by campus central IT division. +AddressLine1: 11200 SW 8th St +AddressLine2: PC415b +City: Miami +Country: United States +ID: 10355 +Latitude: 25.757 +Longitude: -80.374 +State: FL +Zipcode: '33199' + diff --git a/topology/Florida State University/FSU_HNPGRID/OSG_US_FSU_HNPGRID.yaml b/topology/Florida State University/FSU_HNPGRID/OSG_US_FSU_HNPGRID.yaml index c3eba826b..d83d34ecb 100644 --- a/topology/Florida State University/FSU_HNPGRID/OSG_US_FSU_HNPGRID.yaml +++ b/topology/Florida State University/FSU_HNPGRID/OSG_US_FSU_HNPGRID.yaml @@ -3,7 +3,7 @@ GroupID: 475 Production: true Resources: GLUEX_US_FSU_HNPGRID: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -43,7 +43,7 @@ Resources: ID: 73ed2d273dace60d6e6ff5baabeb8755624001bd Name: Sean Dobbs Description: Hosted CE for HNPGRID cluster - FQDN: hosted-ce07.opensciencegrid.org + FQDN: fsu-hnpgrid-ce1.svc.opensciencegrid.org ID: 1080 Services: CE: diff --git a/topology/Franklin and Mashall College/FACILITY.yaml b/topology/Franklin and Marshall College/FACILITY.yaml similarity index 100% rename from topology/Franklin and Mashall College/FACILITY.yaml rename to topology/Franklin and Marshall College/FACILITY.yaml diff --git a/topology/Franklin and Mashall College/FANDM-ITS/FANDM-ITS.yaml b/topology/Franklin and Marshall College/FANDM-ITS/FANDM-ITS.yaml similarity index 99% rename from topology/Franklin and Mashall College/FANDM-ITS/FANDM-ITS.yaml rename to topology/Franklin and Marshall College/FANDM-ITS/FANDM-ITS.yaml index 102c993b8..84deae59b 100644 --- a/topology/Franklin and Mashall College/FANDM-ITS/FANDM-ITS.yaml +++ b/topology/Franklin and Marshall College/FANDM-ITS/FANDM-ITS.yaml @@ -20,7 +20,7 @@ Resources: FANDM-ITS-CE1: # Active is true if the resource is accepting requests, and false otherwise. # When first registering a resource, set this to false. Set it to true when it's ready for production. - Active: false + Active: true # Description is a long description of the resource; may be multiple lines Description: Hosted CE for FANDM-ITS # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` diff --git a/topology/Franklin and Mashall College/FANDM-ITS/SITE.yaml b/topology/Franklin and Marshall College/FANDM-ITS/SITE.yaml similarity index 100% rename from topology/Franklin and Mashall College/FANDM-ITS/SITE.yaml rename to topology/Franklin and Marshall College/FANDM-ITS/SITE.yaml diff --git a/topology/Georgia Institute of Technology/Georgia Tech - ISyE/ISyE.yaml b/topology/Georgia Institute of Technology/Georgia Tech - ISyE/ISyE.yaml index d48f391ee..6a6114c2d 100644 --- a/topology/Georgia Institute of Technology/Georgia Tech - ISyE/ISyE.yaml +++ b/topology/Georgia Institute of Technology/Georgia Tech - ISyE/ISyE.yaml @@ -1,6 +1,6 @@ GroupDescription: Resources in the Georgia Tech's H. Milton Stewart School of Industrial and Systems Engineering -GroupID: 1147 +GroupID: 1325 Production: true Resources: Georgia_Tech_ISyE_hps0403: diff --git a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2.yaml b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2.yaml index 7519ad7e1..3a0fa5eba 100644 --- a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2.yaml +++ b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2.yaml @@ -3,31 +3,25 @@ GroupID: 538 Production: true Resources: Georgia_Tech_PACE_CE_2: - Active: true + Active: false ContactLists: Administrative Contact: Primary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Secondary: - ID: 60aadecab2baceb94cd6cfdbf600a64581ba6af2 - Name: Mehmet Belgin - Tertiary: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b Name: Ruben Lara - Tertiary 2: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic Security Contact: Primary: ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 Name: Peter Couvares Secondary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara Description: This is a Condor CE in front of the PACE cluster, for use by LIGO, Icecube, CTA, OSG-Connect and others. FQDN: osg-sched2.pace.gatech.edu ID: 1059 @@ -50,27 +44,21 @@ Resources: ContactLists: Administrative Contact: Primary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Secondary: - ID: 60aadecab2baceb94cd6cfdbf600a64581ba6af2 - Name: Mehmet Belgin - Tertiary: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b Name: Ruben Lara - Tertiary 2: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic Security Contact: Primary: ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 Name: Peter Couvares Secondary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara Description: Second GridFTP server, initially for incoming LIGO, Icecube, CTA, OSG-Connect. FQDN: osg-gftp2.pace.gatech.edu DN: /DC=org/DC=incommon/C=US/ST=Georgia/O=Georgia Institute of Technology/OU=Office of Information Technology/CN=osg-gftp2.pace.gatech.edu @@ -97,27 +85,21 @@ Resources: ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 Name: Peter Couvares Secondary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b Name: Ruben Lara - Tertiary 2: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic Security Contact: Primary: ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 Name: Peter Couvares Secondary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b Name: Ruben Lara - Tertiary 2: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic Description: Georgia Tech submit node for LIGO, Icecube, CTA, OSG-Connect. FQDN: osg-login2.pace.gatech.edu DN: /DC=org/DC=incommon/C=US/ST=Georgia/L=Atlanta/O=Georgia Institute of Technology/OU=Office of Information Technology/CN=osg-login2.pace.gatech.edu @@ -127,6 +109,8 @@ Resources: Description: OSG Submission Node 2 Details: hidden: false + Tags: + - OSPool VOOwnership: LIGO: 25 IceCube: 25 @@ -140,14 +124,8 @@ Resources: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b Name: Ruben Lara Secondary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter - Tertiary: - ID: 60aadecab2baceb94cd6cfdbf600a64581ba6af2 - Name: Mehmet Belgin - Tertiary 2: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic Security Contact: Primary: ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 @@ -156,8 +134,8 @@ Resources: ID: 6782bb78755f1c9464843722cdd43b4cb8c51a63 Name: Trever Nightingale Tertiary: - ID: efbe08500c5999660418137fe2651dd5ce295eba - Name: Semir Sarajlic + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara Description: This is the Georgia Tech bandwidth instance at the Georgia Institute of Technology FQDN: perfsonar.pace.gatech.edu ID: 1113 @@ -171,4 +149,100 @@ Resources: IceCube: 25 CTA: 25 OSG: 25 + Georgia_Tech_PACE_CE_OSG: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000313 + Name: Eric Coulter + Secondary: + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara + Security Contact: + Primary: + ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 + Name: Peter Couvares + Secondary: + ID: OSG1000313 + Name: Eric Coulter + Tertiary: + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara + Description: This is a Condor CE in front of the PACE cluster, for use by OSG-Connect + FQDN: gateway-osg-buzzard.pace.gatech.edu + ID: 1446 + Services: + CE: + Description: Compute Element + Details: + hidden: false + Tags: + - CC* + VOOwnership: + OSG: 100 + Georgia_Tech_PACE_CE_LIGO: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000313 + Name: Eric Coulter + Secondary: + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara + Security Contact: + Primary: + ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 + Name: Peter Couvares + Secondary: + ID: OSG1000313 + Name: Eric Coulter + Tertiary: + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara + Description: This is a Condor CE in front of the PACE cluster, for use by LIGO + FQDN: gateway-ligo-buzzard.pace.gatech.edu + ID: 1447 + Services: + CE: + Description: Compute Element + Details: + hidden: false + Tags: + - CC* + VOOwnership: + LIGO: 100 + Georgia_Tech_PACE_CE_ICECUBE: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000313 + Name: Eric Coulter + Secondary: + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara + Security Contact: + Primary: + ID: 547c65a6ed5e9e755c023418a47b8b92e88f0523 + Name: Peter Couvares + Secondary: + ID: OSG1000313 + Name: Eric Coulter + Tertiary: + ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b + Name: Ruben Lara + Description: This is a Condor CE in front of the PACE cluster, for use by IceCube + FQDN: gateway-icecube-buzzard.pace.gatech.edu + ID: 1448 + Services: + CE: + Description: Compute Element + Details: + hidden: false + Tags: + - CC* + VOOwnership: + IceCube: 100 SupportCenter: Advanced LIGO diff --git a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2_downtime.yaml b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2_downtime.yaml index dde4d4bd3..9758006d6 100644 --- a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2_downtime.yaml +++ b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE OSG 2_downtime.yaml @@ -355,4 +355,231 @@ Services: - net.perfSONAR.Bandwidth # --------------------------------------------------------- - +- Class: SCHEDULED + ID: 1316206401 + Description: November Maintenance Outage + Severity: Outage + StartTime: Nov 02, 2022 10:00 +0000 + EndTime: Nov 04, 2022 16:00 +0000 + CreatedTime: Oct 24, 2022 14:10 +0000 + ResourceName: Georgia_Tech_LIGO_Submit_2 + Services: + - Submit Node +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1316206402 + Description: November Maintenance Outage + Severity: Outage + StartTime: Nov 02, 2022 10:00 +0000 + EndTime: Nov 04, 2022 16:00 +0000 + CreatedTime: Oct 24, 2022 14:10 +0000 + ResourceName: Georgia_Tech_PACE_CE_2 + Services: + - CE + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1316206403 + Description: November Maintenance Outage + Severity: Outage + StartTime: Nov 02, 2022 10:00 +0000 + EndTime: Nov 04, 2022 16:00 +0000 + CreatedTime: Oct 24, 2022 14:10 +0000 + ResourceName: Georgia_Tech_PACE_GridFTP2 + Services: + - GridFtp + - XRootD cache server +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1316206404 + Description: November Maintenance Outage + Severity: Outage + StartTime: Nov 02, 2022 10:00 +0000 + EndTime: Nov 04, 2022 16:00 +0000 + CreatedTime: Oct 24, 2022 14:10 +0000 + ResourceName: Georgia_Tech_PACE_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1395064543 + Description: Quarterly Maintenance + Severity: Outage + StartTime: Jan 31, 2023 11:00 +0000 + EndTime: Feb 02, 2023 16:00 +0000 + CreatedTime: Jan 23, 2023 20:40 +0000 + ResourceName: Georgia_Tech_LIGO_Submit_2 + Services: + - Submit Node +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1395064544 + Description: Quarterly Maintenance + Severity: Outage + StartTime: Jan 31, 2023 11:00 +0000 + EndTime: Feb 02, 2023 16:00 +0000 + CreatedTime: Jan 23, 2023 20:40 +0000 + ResourceName: Georgia_Tech_PACE_CE_2 + Services: + - CE + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1395064545 + Description: Quarterly Maintenance + Severity: Outage + StartTime: Jan 31, 2023 11:00 +0000 + EndTime: Feb 02, 2023 16:00 +0000 + CreatedTime: Jan 23, 2023 20:40 +0000 + ResourceName: Georgia_Tech_PACE_GridFTP2 + Services: + - GridFtp + - XRootD cache server +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1395064546 + Description: Quarterly Maintenance + Severity: Outage + StartTime: Jan 31, 2023 11:00 +0000 + EndTime: Feb 02, 2023 16:00 +0000 + CreatedTime: Jan 23, 2023 20:40 +0000 + ResourceName: Georgia_Tech_PACE_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1483078485 + Description: Quarterly Maintenance + Severity: Outage + StartTime: May 08, 2023 16:00 +0000 + EndTime: May 11, 2023 10:00 +0000 + CreatedTime: May 05, 2023 17:30 +0000 + ResourceName: Georgia_Tech_LIGO_Submit_2 + Services: + - Submit Node +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1483078486 + Description: Quarterly Maintenance + Severity: Outage + StartTime: May 08, 2023 16:00 +0000 + EndTime: May 11, 2023 10:00 +0000 + CreatedTime: May 05, 2023 17:30 +0000 + ResourceName: Georgia_Tech_PACE_CE_2 + Services: + - CE + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1483078487 + Description: Quarterly Maintenance + Severity: Outage + StartTime: May 08, 2023 16:00 +0000 + EndTime: May 11, 2023 10:00 +0000 + CreatedTime: May 05, 2023 17:30 +0000 + ResourceName: Georgia_Tech_PACE_GridFTP2 + Services: + - GridFtp + - XRootD cache server +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1483078488 + Description: Quarterly Maintenance + Severity: Outage + StartTime: May 08, 2023 16:00 +0000 + EndTime: May 11, 2023 10:00 +0000 + CreatedTime: May 05, 2023 17:30 +0000 + ResourceName: Georgia_Tech_PACE_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1491717720 + Description: Slate CE Outage + Severity: Severe + StartTime: May 12, 2023 10:00 +0000 + EndTime: May 17, 2023 20:00 +0000 + CreatedTime: May 15, 2023 17:29 +0000 + ResourceName: Georgia_Tech_PACE_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521022 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_LIGO_Submit_2 + Services: + - Submit Node +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521023 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_PACE_CE_2 + Services: + - CE + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521024 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_PACE_CE_ICECUBE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521025 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_PACE_CE_LIGO + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521026 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_PACE_CE_OSG + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521027 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_PACE_GridFTP2 + Services: + - GridFtp + - XRootD cache server +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564521028 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:48 +0000 + ResourceName: Georgia_Tech_PACE_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- diff --git a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE.yaml b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE.yaml index 6176702a4..04e8636c4 100644 --- a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE.yaml +++ b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE.yaml @@ -13,7 +13,7 @@ Resources: ID: 60aadecab2baceb94cd6cfdbf600a64581ba6af2 Name: Mehmet Belgin Tertiary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary 2: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b @@ -54,7 +54,7 @@ Resources: ID: 60aadecab2baceb94cd6cfdbf600a64581ba6af2 Name: Mehmet Belgin Tertiary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary 2: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b @@ -99,7 +99,7 @@ Resources: ID: 6782bb78755f1c9464843722cdd43b4cb8c51a63 Name: Trever Nightingale Tertiary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary 2: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b @@ -115,7 +115,7 @@ Resources: ID: 6782bb78755f1c9464843722cdd43b4cb8c51a63 Name: Trever Nightingale Tertiary: - ID: 9b4ba34eebd0b5d23ab015e14ca2c722387fd942 + ID: OSG1000313 Name: Eric Coulter Tertiary 2: ID: 068fa784cd29b5aee10ccce2669a95cbaa66d88b diff --git a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE_downtime.yaml b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE_downtime.yaml index 91068e72c..fb5027ff8 100644 --- a/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE_downtime.yaml +++ b/topology/Georgia Institute of Technology/Georgia Tech/Georgia Tech PACE_downtime.yaml @@ -503,3 +503,38 @@ - GridFtp - XRootD cache server # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564520488 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:47 +0000 + ResourceName: Georgia_Tech_LIGO_Submit_1 + Services: + - Submit Node +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564520489 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:47 +0000 + ResourceName: Georgia_Tech_PACE_CE_1 + Services: + - CE + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1564520490 + Description: Sitewide maintenance + Severity: Intermittent Outage + StartTime: Aug 08, 2023 12:00 +0000 + EndTime: Aug 11, 2023 00:00 +0000 + CreatedTime: Aug 07, 2023 23:47 +0000 + ResourceName: Georgia_Tech_PACE_GridFTP + Services: + - GridFtp + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Great Plains Network/Cameron University/GP-ARGO-cameron.yaml b/topology/Great Plains Network/Cameron University/GP-ARGO-cameron.yaml new file mode 100644 index 000000000..d41dc3a18 --- /dev/null +++ b/topology/Great Plains Network/Cameron University/GP-ARGO-cameron.yaml @@ -0,0 +1,25 @@ + +Production: true +SupportCenter: Self Supported +GroupDescription: Distributed compute resources made available through GP-ARGO +GroupID: 1340 +Resources: + GP-ARGO-cameron-backfill: + Active: true + Description: Backfill containers running at Cameron University + ID: 1411 + ContactLists: + Administrative Contact: + Primary: + ID: 0a077233ccf64c5f4a0888b0de224093f5129e9a + Name: Kyle Hutson + Security Contact: + Primary: + ID: 0a077233ccf64c5f4a0888b0de224093f5129e9a + Name: Kyle Hutson + FQDN: cameron.gp-argo.greatplains.net + Services: + Execution Endpoint: + Description: GP-ARGO backfill containers + Tags: + - CC* diff --git a/topology/Great Plains Network/Cameron University/SITE.yaml b/topology/Great Plains Network/Cameron University/SITE.yaml new file mode 100644 index 000000000..de6e793eb --- /dev/null +++ b/topology/Great Plains Network/Cameron University/SITE.yaml @@ -0,0 +1,4 @@ +ID: 10354 +Latitude: 34.74954458019702 +LongName: Cameron University +Longitude: -92.32063891743086 diff --git a/topology/Great Plains Network/Doane University/GP-ARGO-doane.yaml b/topology/Great Plains Network/Doane University/GP-ARGO-doane.yaml new file mode 100644 index 000000000..454ec7b7f --- /dev/null +++ b/topology/Great Plains Network/Doane University/GP-ARGO-doane.yaml @@ -0,0 +1,25 @@ + +Production: true +SupportCenter: Self Supported +GroupDescription: Distributed compute resources made available through GP-ARGO +GroupID: 1337 +Resources: + GP-ARGO-doane-backfill: + Active: true + Description: Backfill containers running at Doane University + ID: 1404 + ContactLists: + Administrative Contact: + Primary: + ID: 0a077233ccf64c5f4a0888b0de224093f5129e9a + Name: Kyle Hutson + Security Contact: + Primary: + ID: 0a077233ccf64c5f4a0888b0de224093f5129e9a + Name: Kyle Hutson + FQDN: doane.gp-argo.greatplains.net + Services: + Execution Endpoint: + Description: GP-ARGO backfill containers + Tags: + - CC* diff --git a/topology/Great Plains Network/Doane University/SITE.yaml b/topology/Great Plains Network/Doane University/SITE.yaml new file mode 100644 index 000000000..66007e218 --- /dev/null +++ b/topology/Great Plains Network/Doane University/SITE.yaml @@ -0,0 +1,4 @@ +ID: 10349 +Latitude: 40.62305169886312 +LongName: Doane University +Longitude: -96.95095627334094 diff --git a/topology/Great Plains Network/Langston University/GP-ARGO-langston.yaml b/topology/Great Plains Network/Langston University/GP-ARGO-langston.yaml index 16ffee754..fa6eacf7e 100644 --- a/topology/Great Plains Network/Langston University/GP-ARGO-langston.yaml +++ b/topology/Great Plains Network/Langston University/GP-ARGO-langston.yaml @@ -7,7 +7,7 @@ Resources: GP-ARGO-langston-backfill: Active: true Description: Backfill containers running at Langston University - ID: 1288 + ID: 1365 ContactLists: Administrative Contact: Primary: diff --git a/topology/Great Plains Network/University of Kansas/GP-ARGO-ku.yaml b/topology/Great Plains Network/University of Kansas/GP-ARGO-ku.yaml index fe0c66c11..4e5a2e4e2 100644 --- a/topology/Great Plains Network/University of Kansas/GP-ARGO-ku.yaml +++ b/topology/Great Plains Network/University of Kansas/GP-ARGO-ku.yaml @@ -7,7 +7,7 @@ Resources: GP-ARGO-ku-backfill: Active: true Description: Backfill containers running at University of Kansas - ID: 1280 + ID: 1364 ContactLists: Administrative Contact: Primary: diff --git a/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure.yaml b/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure.yaml index e3bc7e410..74867beeb 100644 --- a/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure.yaml +++ b/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure.yaml @@ -26,13 +26,13 @@ Resources: ID: 111d9c8900f39a973798f230d802fb903bb704d9 Name: Daniele Cesini Description: StashCache cache server for INFN T1 - FQDN: xcache.cr.cnaf.infn.it + FQDN: ds-914.cr.cnaf.infn.it ID: 1019 Services: XRootD cache server: Description: StashCache cache server AllowedVOs: - - ANY + - LIGO DN: /DC=org/DC=terena/DC=tcs/C=IT/ST=Roma/O=Istituto Nazionale di Fisica Nucleare/CN=ds-102-11-18.cr.cnaf.infn.it SupportCenter: Self Supported diff --git a/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure_downtime.yaml b/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure_downtime.yaml new file mode 100644 index 000000000..f5cf58155 --- /dev/null +++ b/topology/INFN-T1/INFN-T1/INFN-T1CachingInfrastructure_downtime.yaml @@ -0,0 +1,11 @@ +- Class: SCHEDULED + ID: 1407056554 + Description: updating + Severity: Outage + StartTime: Feb 07, 2023 05:00 +0000 + EndTime: Feb 28, 2023 20:30 +0000 + CreatedTime: Feb 06, 2023 17:47 +0000 + ResourceName: T1_STASHCACHE_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Indiana University/Pervasive Technology Institute/Jetstream2-IU.yaml b/topology/Indiana University/Pervasive Technology Institute/Jetstream2-IU.yaml index cc1d41f11..48edfc305 100644 --- a/topology/Indiana University/Pervasive Technology Institute/Jetstream2-IU.yaml +++ b/topology/Indiana University/Pervasive Technology Institute/Jetstream2-IU.yaml @@ -1,5 +1,5 @@ GroupDescription: Jetstream2-IU -GroupID: 1144 +GroupID: 1323 Production: true Resources: IU-Jetstream2-Backfill: @@ -21,4 +21,22 @@ Resources: Description: OSG VO backfill containers Details: hidden: false + IU-Jetstream2-Backfill-Squid: + Description: Frontier Squid serving Jetstream + ContactLists: + Administrative Contact: + Primary: + ID: 38cd7e4efcb45e2aff808b98f5f928c96b3a8608 + Name: Mats Rynge + Security Contact: + Primary: + ID: 38cd7e4efcb45e2aff808b98f5f928c96b3a8608 + Name: Mats Rynge + FQDN: squid-jetstream-1.sites.osg-htc.org + ID: 1225 + Services: + Squid: + Description: Squid service for frontier and cvmfs + Details: + hidden: false SupportCenter: Self Supported diff --git a/topology/Internet2/Internet2Boise/I2BoiseInfrastructure.yaml b/topology/Internet2/Internet2Boise/I2BoiseInfrastructure.yaml new file mode 100644 index 000000000..404d02dfe --- /dev/null +++ b/topology/Internet2/Internet2Boise/I2BoiseInfrastructure.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the Internet2 Boise Point of Presence +GroupID: 1338 +Resources: + BOISE_INTERNET2_OSDF_CACHE: + Active: true + Description: Internet2 Boise Cache + ID: 1405 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: dtn-pas.bois.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=dtn-pas.bois.nrp.internet2.edu + Services: + XRootD cache server: + Description: Internet2 Boise Cache + AllowedVOs: + - ANY diff --git a/topology/Internet2/Internet2Boise/I2BoiseInfrastructure_downtime.yaml b/topology/Internet2/Internet2Boise/I2BoiseInfrastructure_downtime.yaml new file mode 100644 index 000000000..57d0e1d57 --- /dev/null +++ b/topology/Internet2/Internet2Boise/I2BoiseInfrastructure_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1516111752 + Description: node offline + Severity: Outage + StartTime: Jun 12, 2023 19:30 +0000 + EndTime: Jun 16, 2023 19:30 +0000 + CreatedTime: Jun 12, 2023 23:06 +0000 + ResourceName: BOISE_INTERNET2_OSDF_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Internet2/Internet2Boise/SITE.yaml b/topology/Internet2/Internet2Boise/SITE.yaml new file mode 100644 index 000000000..335daa1f4 --- /dev/null +++ b/topology/Internet2/Internet2Boise/SITE.yaml @@ -0,0 +1,5 @@ +ID: 10350 +LongName: Internet2 Boise +Description: Backbone location of Internet2 at the Boise Point of Presence +Latitude: 43.6140541897732 +Longitude: -116.21071619444785 diff --git a/topology/Internet2/Internet2Chicago/I2ChicagoInfrastructure.yaml b/topology/Internet2/Internet2Chicago/I2ChicagoInfrastructure.yaml index a8e21df96..456cf92dc 100644 --- a/topology/Internet2/Internet2Chicago/I2ChicagoInfrastructure.yaml +++ b/topology/Internet2/Internet2Chicago/I2ChicagoInfrastructure.yaml @@ -11,19 +11,16 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 FQDN: osg-chicago-stashcache.nrp.internet2.edu - DN: /DC=org/DC=incommon/C=US/ST=Michigan/L=Ann Arbor/O=University Corporation For Advanced Internet Development/CN=osg-chicago-stashcache.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=osg-chicago-stashcache.nrp.internet2.edu Services: XRootD cache server: Description: Internet2 Chicago Cache - Details: - #endpoint_override: osg-chicago-stashcache.nrp.internet2.edu:8000 - auth_endpoint_override: osg-chicago-stashcache.nrp.internet2.edu:8444 AllowedVOs: - ANY diff --git a/topology/Internet2/Internet2Cincinnati/I2CincinnatiInfrastructure.yaml b/topology/Internet2/Internet2Cincinnati/I2CincinnatiInfrastructure.yaml new file mode 100644 index 000000000..f0ac6172f --- /dev/null +++ b/topology/Internet2/Internet2Cincinnati/I2CincinnatiInfrastructure.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the Internet2 Cincinnati Point of Presence +GroupID: 1339 +Resources: + CINCINNATI_INTERNET2_OSDF_CACHE: + Active: true + Description: Internet2 Cincinnati Cache + ID: 1406 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: dtn-pas.cinc.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=dtn-pas.cinc.nrp.internet2.edu + Services: + XRootD cache server: + Description: Internet2 Cincinnati Cache + AllowedVOs: + - ANY diff --git a/topology/Internet2/Internet2Cincinnati/SITE.yaml b/topology/Internet2/Internet2Cincinnati/SITE.yaml new file mode 100644 index 000000000..e9a2f2a22 --- /dev/null +++ b/topology/Internet2/Internet2Cincinnati/SITE.yaml @@ -0,0 +1,5 @@ +ID: 10351 +LongName: Internet2 Cincinnati +Description: Backbone location of Internet2 at the Cincinnati Point of Presence +Latitude: 39.10268252066838 +Longitude: -84.50302745925939 diff --git a/topology/Internet2/Internet2Denver/I2DenverInfrastructure.yaml b/topology/Internet2/Internet2Denver/I2DenverInfrastructure.yaml new file mode 100644 index 000000000..fef5e0dff --- /dev/null +++ b/topology/Internet2/Internet2Denver/I2DenverInfrastructure.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the Internet2 Denver Point of Presence +GroupID: 1344 +Resources: + DENVER_INTERNET2_OSDF_CACHE: + Active: true + Description: Internet2 Denver Cache + ID: 1418 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: dtn-pas.denv.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=dtn-pas.denv.nrp.internet2.edu + Services: + XRootD cache server: + Description: Internet2 Denver Cache + AllowedVOs: + - ANY diff --git a/topology/Internet2/Internet2Denver/SITE.yaml b/topology/Internet2/Internet2Denver/SITE.yaml new file mode 100644 index 000000000..75cfe70e3 --- /dev/null +++ b/topology/Internet2/Internet2Denver/SITE.yaml @@ -0,0 +1,5 @@ +ID: 10356 +LongName: Internet2 Denver +Description: Backbone location of Internet2 at the Denver Point of Presence +Latitude: 39.74582707084923 +Longitude: -104.97949077328207 diff --git a/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure.yaml b/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure.yaml index 6b73804dd..f69b61be6 100644 --- a/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure.yaml +++ b/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure.yaml @@ -11,19 +11,16 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 FQDN: osg-kansas-city-stashcache.nrp.internet2.edu - DN: /DC=org/DC=incommon/C=US/ST=Michigan/L=Ann Arbor/O=University Corporation For Advanced Internet Development/CN=osg-kansas-city-stashcache.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=osg-kansas-city-stashcache.nrp.internet2.edu Services: XRootD cache server: Description: Internet2 Kansas Cache - Details: - #endpoint_override: osg-kansas-city-stashcache.nrp.internet2.edu:8000 - auth_endpoint_override: osg-kansas-city-stashcache.nrp.internet2.edu:8444 AllowedVOs: - ANY diff --git a/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure_downtime.yaml b/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure_downtime.yaml new file mode 100644 index 000000000..ebd2a4369 --- /dev/null +++ b/topology/Internet2/Internet2GreatPlains/I2GreatPlainsInfrastructure_downtime.yaml @@ -0,0 +1,9 @@ +- Class: SCHEDULED + Description: SCHEDULED cert update + EndTime: Nov 10, 2022 1:00 +0000 + ID: 1040 + ResourceName: Stashcache-Kansas + Services: + - XRootD cache server + Severity: Outage + StartTime: Nov 10, 2022 1:00 +0000 diff --git a/topology/Internet2/Internet2Houston/I2HoustonInfrastructure.yaml b/topology/Internet2/Internet2Houston/I2HoustonInfrastructure.yaml index 4ce803997..9284c00ac 100644 --- a/topology/Internet2/Internet2Houston/I2HoustonInfrastructure.yaml +++ b/topology/Internet2/Internet2Houston/I2HoustonInfrastructure.yaml @@ -6,24 +6,43 @@ Resources: Stashcache-Houston: Active: true Description: Internet2Houston Cache - ID: 1037 + ID: 1387 ContactLists: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 FQDN: osg-houston-stashcache.nrp.internet2.edu - DN: /DC=org/DC=incommon/C=US/ST=Michigan/L=Ann Arbor/O=University Corporation For Advanced Internet Development/CN=osg-houston-stashcache.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=osg-houston-stashcache.nrp.internet2.edu Services: XRootD cache server: Description: Internet2Houston Cache - Details: - #endpoint_override: osg-houston-stashcache.nrp.internet2.edu:8000 - auth_endpoint_override: osg-houston-stashcache.nrp.internet2.edu:8444 AllowedVOs: - ANY + + HOUSTON2_INTERNET2_OSDF_CACHE: + Active: true + Description: Internet2 Houston Cache + ID: 1419 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: dtn-pas.hous.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=dtn-pas.hous.nrp.internet2.edu + Services: + XRootD cache server: + Description: Internet2 Houston 2 Cache + AllowedVOs: + - ANY + diff --git a/topology/Internet2/Internet2Jacksonville/I2JacksonvilleInfrastructure.yaml b/topology/Internet2/Internet2Jacksonville/I2JacksonvilleInfrastructure.yaml new file mode 100644 index 000000000..accb618a7 --- /dev/null +++ b/topology/Internet2/Internet2Jacksonville/I2JacksonvilleInfrastructure.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the Internet2 Jacksonville Point of Presence +GroupID: 1345 +Resources: + JACKSONVILLE_INTERNET2_OSDF_CACHE: + Active: true + Description: Internet2 Jacksonville Cache + ID: 1420 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: dtn-pas.jack.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=dtn-pas.jack.nrp.internet2.edu + Services: + XRootD cache server: + Description: Internet2 Jacksonville Cache + AllowedVOs: + - ANY diff --git a/topology/Internet2/Internet2Jacksonville/SITE.yaml b/topology/Internet2/Internet2Jacksonville/SITE.yaml new file mode 100644 index 000000000..5b499d8d9 --- /dev/null +++ b/topology/Internet2/Internet2Jacksonville/SITE.yaml @@ -0,0 +1,5 @@ +ID: 10357 +LongName: Internet2 Jacksonville +Description: Backbone location of Internet2 at the Jacksonville Point of Presence +Latitude: 30.258591018943438 +Longitude: -81.6107849195673 diff --git a/topology/Internet2/Internet2Manhattan/I2ManhattanInfrastructure.yaml b/topology/Internet2/Internet2Manhattan/I2ManhattanInfrastructure.yaml index fdc195c9d..7981db8b5 100644 --- a/topology/Internet2/Internet2Manhattan/I2ManhattanInfrastructure.yaml +++ b/topology/Internet2/Internet2Manhattan/I2ManhattanInfrastructure.yaml @@ -11,19 +11,16 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 FQDN: osg-new-york-stashcache.nrp.internet2.edu - DN: /DC=org/DC=incommon/C=US/ST=Michigan/L=Ann Arbor/O=University Corporation For Advanced Internet Development/CN=osg-new-york-stashcache.nrp.internet2.edu + DN: /DC=org/DC=incommon/C=US/ST=Michigan/O=University Corporation For Advanced Internet Development/CN=osg-new-york-stashcache.nrp.internet2.edu Services: XRootD cache server: Description: Internet2 Manhattan Cache - Details: - #endpoint_override: osg-new-york-stashcache.nrp.internet2.edu:8000 - auth_endpoint_override: osg-new-york-stashcache.nrp.internet2.edu:8444 AllowedVOs: - ANY diff --git a/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure.yaml b/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure.yaml index 58444dc49..63c665f80 100644 --- a/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure.yaml +++ b/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure.yaml @@ -1,29 +1,26 @@ Production: true SupportCenter: Community Support Center GroupDescription: Services located at the Internet2 Sunnyvale Point of Presence -GroupID: 522 +GroupID: 1317 Resources: Stashcache-Sunnyvale: Active: true Description: Internet2Sunnyvale Cache - ID: 1037 + ID: 1388 ContactLists: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 - FQDN: osg-sunnyvale-stashcache.nrp.internet2.edu - DN: /DC=org/DC=incommon/C=US/ST=Michigan/L=Ann Arbor/O=University Corporation For Advanced Internet Development/CN=osg-sunnyvale-stashcache.nrp.internet2.edu + ID: OSG1000162 + FQDN: osg-sunnyvale-stashcache.t2.ucsd.edu + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=osg-sunnyvale-stashcache.t2.ucsd.edu Services: XRootD cache server: Description: Internet2Sunnyvale Cache - Details: - #endpoint_override: osg-sunnyvale-stashcache.nrp.internet2.edu:8000 - auth_endpoint_override: osg-sunnyvale-stashcache.nrp.internet2.edu:8444 AllowedVOs: - ANY diff --git a/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure_downtime.yaml b/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure_downtime.yaml new file mode 100644 index 000000000..10c35531e --- /dev/null +++ b/topology/Internet2/Internet2Sunnyvale/I2SunnyvaleInfrastructure_downtime.yaml @@ -0,0 +1,11 @@ +- Class: SCHEDULED + ID: 1337117727 + Description: OS reinstall + Severity: Outage + StartTime: Nov 07, 2022 18:39 +0000 + EndTime: Nov 18, 2022 18:30 +0000 + CreatedTime: Nov 17, 2022 19:02 +0000 + ResourceName: Stashcache-Sunnyvale + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Iowa State University/ISU-HPC/ISU-SLURM-CE.yaml b/topology/Iowa State University/ISU-HPC/ISU-SLURM-CE.yaml index be16da560..3706f2eb7 100644 --- a/topology/Iowa State University/ISU-HPC/ISU-SLURM-CE.yaml +++ b/topology/Iowa State University/ISU-HPC/ISU-SLURM-CE.yaml @@ -8,7 +8,7 @@ GroupDescription: Slurm CE for ISU HPC resources # If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` # Otherwise, leave it blank and we will fill in the appropriate value for you. -GroupID: 1111 +GroupID: 1321 # Resources contains one or more resources in this # ResourceGroup. A resource provides one or more services diff --git a/topology/Kansas State University/Beocat/BEOCAT-SLATE.yaml b/topology/Kansas State University/Beocat/BEOCAT-SLATE.yaml index 88e58c952..5778adf6f 100644 --- a/topology/Kansas State University/Beocat/BEOCAT-SLATE.yaml +++ b/topology/Kansas State University/Beocat/BEOCAT-SLATE.yaml @@ -4,7 +4,7 @@ GroupID: 1107 Production: true Resources: BEOCAT-SLATE: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -26,3 +26,26 @@ Resources: Description: Compute Element Details: hidden: false + KSU-Beocat-CE1: + Active: true + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Site Contact: + Primary: + ID: 0a077233ccf64c5f4a0888b0de224093f5129e9a + Name: Kyle Hutson + Description: Hosted CE for the Beocat cluster, replaces slate-osg.beocat.ksu.edu + FQDN: ksu-beocat-ce1.svc.opensciencegrid.org + ID: 1408 + Services: + CE: + Description: Compute Element + Details: + hidden: false diff --git a/topology/Kent State University/FACILITY.yaml b/topology/Kent State University/FACILITY.yaml new file mode 100644 index 000000000..2ddf51777 --- /dev/null +++ b/topology/Kent State University/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10205 diff --git a/topology/Kent State University/Kent State Research/Kent_State_Research.yaml b/topology/Kent State University/Kent State Research/Kent_State_Research.yaml new file mode 100644 index 000000000..d357d958d --- /dev/null +++ b/topology/Kent State University/Kent State Research/Kent_State_Research.yaml @@ -0,0 +1,25 @@ +GroupDescription: The University of Wisconsin's Center for High Throughput Computing. Note + that CHTC and GLOW are closely related, and in many contexts, they are synonyms. +GroupID: 1341 +Production: true +SupportCenter: Self Supported +Resources: + KENT-STATE-RESEARCH-EP: + Active: false + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000285 + Name: Philip Thomas + Security Contact: + Primary: + ID: OSG1000285 + Name: Philip Thomas + Description: Kent State Research OSPool containers + FQDN: research-ospool-ep.kent.edu + ID: 1412 + Services: + Execution Endpoint: + Description: Kent State Research OSPool containers + Tags: + - CC* diff --git a/topology/Kent State University/Kent State Research/SITE.yaml b/topology/Kent State University/Kent State Research/SITE.yaml new file mode 100644 index 000000000..553c79319 --- /dev/null +++ b/topology/Kent State University/Kent State Research/SITE.yaml @@ -0,0 +1,27 @@ +# LongName is the expanded name of the site +LongName: Kent State University Research +# Description is a brief description of your site +Description: Kent State University Research Cluster + +# If you have an up-to-date local git clone, fill ID with the output from `bin/next_site_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +ID: 10352 + +# AddressLine1 is the street address of the site +AddressLine1: 800 Hilltop Dr +### AddressLine2 (optional) is the second line of the street address +# AddressLine2: Room 101 +# City is the city the site is located in +City: Kent + +# Country is the country the site is located in +Country: United States +### State (optional) is the state or province the site is located in +# State: Wisconsin +### Zipcode (optional) is the zipcode/postal code of the site +# Zipcode: "01234" + +# Latitude is the latitude of the site (positive values are in the northern hemisphere) +Latitude: 41.1411794353 +# Longitude is the longitude of the site (positive values are in the eastern hemisphere) +Longitude: -81.3383786465 diff --git a/topology/Korea Institute of Science and Technology Information/T3_KR_KISTI/KISTIPRPCachingInfrastructure.yaml b/topology/Korea Institute of Science and Technology Information/T3_KR_KISTI/KISTIPRPCachingInfrastructure.yaml index d9a8f51e0..3f3e560be 100644 --- a/topology/Korea Institute of Science and Technology Information/T3_KR_KISTI/KISTIPRPCachingInfrastructure.yaml +++ b/topology/Korea Institute of Science and Technology Information/T3_KR_KISTI/KISTIPRPCachingInfrastructure.yaml @@ -6,21 +6,21 @@ Resources: Stashcache-KISTI: Active: true Description: KISTI StashCache - ID: 1001 + ID: 1344 ContactLists: Administrative Contact: Primary: - Name: Diego Davila - ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Name: Fabio Andrijauskas + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: - Name: Diego Davila - ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f - FQDN: dtn2-daejeon.kreonet.net - DN: /DC=org/DC=terena/DC=tcs/C=NL/L=Amsterdam/O=Universiteit van Amsterdam/CN=fiona-r-uva.vlan7.uvalight.net + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: daejeon-kreonet-net.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=daejeon-kreonet-net.nationalresearchplatform.org Services: XRootD cache server: Description: KISTI PRP Caching Service AllowedVOs: - - ANY \ No newline at end of file + - ANY diff --git a/topology/Lafayette College/FACILITY.yaml b/topology/Lafayette College/FACILITY.yaml new file mode 100644 index 000000000..264d6d6d2 --- /dev/null +++ b/topology/Lafayette College/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10202 diff --git a/topology/Lafayette College/Lafayette College/LC-ITS.yaml b/topology/Lafayette College/Lafayette College/LC-ITS.yaml new file mode 100644 index 000000000..4798d0a0b --- /dev/null +++ b/topology/Lafayette College/Lafayette College/LC-ITS.yaml @@ -0,0 +1,144 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: This is a cluster at Lafayette College ITS + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1327 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + LC-ITS-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: false + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE for LC-ITS + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1383 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: lc-its-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: LC-ITS CE1 hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + # Tags: + # - + # - + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # ... diff --git a/topology/Lafayette College/Lafayette College/LC-ITS_downtime.yaml b/topology/Lafayette College/Lafayette College/LC-ITS_downtime.yaml new file mode 100644 index 000000000..b22672375 --- /dev/null +++ b/topology/Lafayette College/Lafayette College/LC-ITS_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1480656460 + Description: outbound network blocked due to a security compromise + Severity: Severe + StartTime: May 02, 2023 21:59 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: May 02, 2023 22:14 +0000 + ResourceName: LC-ITS-CE1 + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/Lafayette College/Lafayette College/SITE.yaml b/topology/Lafayette College/Lafayette College/SITE.yaml new file mode 100644 index 000000000..23de4cbdb --- /dev/null +++ b/topology/Lafayette College/Lafayette College/SITE.yaml @@ -0,0 +1,10 @@ +AddressLine1: 730 High St +City: Easton +Country: United States +Description: Lafayette College ITS cluster +ID: 10344 +Latitude: 40.6985 +Longitude: 75.2101 +State: PA +Zipcode: '18042' + diff --git a/topology/Lawrence Berkley National Laboratory/LBL_HPCS/LBL_HPCS_downtime.yaml b/topology/Lawrence Berkley National Laboratory/LBL_HPCS/LBL_HPCS_downtime.yaml index aeb8cf874..3a70ccef6 100644 --- a/topology/Lawrence Berkley National Laboratory/LBL_HPCS/LBL_HPCS_downtime.yaml +++ b/topology/Lawrence Berkley National Laboratory/LBL_HPCS/LBL_HPCS_downtime.yaml @@ -1,12 +1,33 @@ - Class: UNSCHEDULED - ID: 1095204519 - Description: the slurm scheduler is not functioning as expected after an update. giving - 5 days from now to resolve, may resolve sooner + ID: 1299092679 + Description: SLURM update Severity: Outage - StartTime: Feb 03, 2022 16:00 +0000 - EndTime: Feb 16, 2022 01:30 +0000 - CreatedTime: Feb 10, 2022 19:14 +0000 + StartTime: Oct 04, 2022 17:00 +0000 + EndTime: Oct 05, 2022 17:00 +0000 + CreatedTime: Oct 04, 2022 18:47 +0000 ResourceName: LBL_HPCS Services: - CE # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1299092680 + Description: SLURM update + Severity: Outage + StartTime: Oct 04, 2022 17:00 +0000 + EndTime: Oct 05, 2022 17:00 +0000 + CreatedTime: Oct 04, 2022 18:47 +0000 + ResourceName: LBL_HPCS_LRC + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1541895313 + Description: Power outage/work affecting our site + Severity: Outage + StartTime: Jul 20, 2023 17:00 +0000 + EndTime: Jul 25, 2023 01:00 +0000 + CreatedTime: Jul 12, 2023 19:18 +0000 + ResourceName: LBL_HPCS_LRC + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk.yaml b/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk.yaml index 2ee5f9f4d..1fb48e7f2 100644 --- a/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk.yaml +++ b/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk.yaml @@ -56,3 +56,26 @@ Resources: Description: Generic squid service Details: Monitored: false + LEHIGH-HAWK-OSDF-CACHE: + Active: true + ID: 1456 + ContactLists: + Administrative Contact: + Primary: + Name: Steve Anthony + ID: 645c812a45f16e7877bfd9e8bf76b81a45481a95 + Security Contact: + Primary: + Name: Steve Anthony + ID: 645c812a45f16e7877bfd9e8bf76b81a45481a95 + Secondary: + Name: James Vincent + ID: db7cd4f29b79bdf8ff078a13f51378a67c11af34 + FQDN: osg-hawk-cache.cc.lehigh.edu + Services: + XRootD cache server: + Description: OSDF cache server + AllowedVOs: + - ANY_PUBLIC + DN: /CN=osg-hawk-cache.cc.lehigh.edu + diff --git a/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk_downtime.yaml b/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk_downtime.yaml index fb231c5da..cc9483b63 100644 --- a/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk_downtime.yaml +++ b/topology/Lehigh University/Lehigh - Hawk/Lehigh - Hawk_downtime.yaml @@ -75,4 +75,15 @@ Services: - CE # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1560742322 + Description: Scheduled cluster maintenance + Severity: Outage + StartTime: Aug 08, 2023 14:00 +0000 + EndTime: Aug 08, 2023 16:00 +0000 + CreatedTime: Aug 03, 2023 14:50 +0000 + ResourceName: LEHIGH-HAWK-CE + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish.yaml b/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish.yaml index 792d356c9..f35cefd79 100644 --- a/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish.yaml +++ b/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish.yaml @@ -4,8 +4,8 @@ GroupID: 1121 GroupDescription: Louisiana State University Health Sciences Center Tigerfish Cluster Resources: LSUHSC-Tigerfish-CE1: - Active: true - ID : 1173 + Active: false + ID: 1173 Description: The Hosted CE serving LSUHSC-Tigerfish ContactLists: Administrative Contact: @@ -30,3 +30,30 @@ Resources: hidden: false Tags: - CC* + LSUHSC-Tigerfish-CE2: + Active: true + ID : 1391 + Description: The Hosted CE serving LSUHSC-Tigerfish + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Secondary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Secondary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + FQDN: lsuhsc-tf-ce2.svc.opensciencegrid.org + Services: + CE: + Description: Hosted CE + Details: + hidden: false + Tags: + - CC* diff --git a/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish_downtime.yaml b/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish_downtime.yaml new file mode 100644 index 000000000..6d9754cbe --- /dev/null +++ b/topology/Louisiana State University Health Sciences Center/Louisiana State University Health Sciences Center/LSUHSC-Tigerfish_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1433768801 + Description: Down while site is in maintenance + Severity: Outage + StartTime: Jan 01, 2023 16:00 +0000 + EndTime: Mar 29, 2023 16:00 +0000 + CreatedTime: Mar 09, 2023 15:48 +0000 + ResourceName: LSUHSC-Tigerfish-CE2 + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/Louisiana State University/LSU - Deep Bayou/LSU-Deep_Bayou.yaml b/topology/Louisiana State University/LSU - Deep Bayou/LSU-Deep_Bayou.yaml index c4423187f..66fd23466 100644 --- a/topology/Louisiana State University/LSU - Deep Bayou/LSU-Deep_Bayou.yaml +++ b/topology/Louisiana State University/LSU - Deep Bayou/LSU-Deep_Bayou.yaml @@ -5,7 +5,7 @@ GroupDescription: This is the LSU - Deep Bayou cluster Resources: LSU-DB-CE1: Active: true - ID : 1122 + ID: 1395 Description: The Hosted CE serving LSU - Deep Bayou ContactLists: Administrative Contact: diff --git a/topology/Louisiana State University/LSU QB2/LSU_QB2.yaml b/topology/Louisiana State University/LSU QB2/LSU_QB2.yaml index d84244f74..abfb15fcc 100644 --- a/topology/Louisiana State University/LSU QB2/LSU_QB2.yaml +++ b/topology/Louisiana State University/LSU QB2/LSU_QB2.yaml @@ -5,7 +5,7 @@ GroupDescription: This is the LSU_QB2 cluster Resources: OSG_US_LSU_QB2: Active: false - ID : 1112 + ID: 1393 Description: The Hosted CE serving LSU_SuperMIC ContactLists: Administrative Contact: @@ -30,7 +30,7 @@ Resources: LIGO: 100 LSU-QB2-CE1: - ID : 1258 + ID: 1360 Description: The Hosted CE serving LSU_SuperMIC ContactLists: Administrative Contact: diff --git a/topology/Louisiana State University/LSU SuperMIC/LSU_SuperMIC.yaml b/topology/Louisiana State University/LSU SuperMIC/LSU_SuperMIC.yaml index cf792b476..a0d7bca90 100644 --- a/topology/Louisiana State University/LSU SuperMIC/LSU_SuperMIC.yaml +++ b/topology/Louisiana State University/LSU SuperMIC/LSU_SuperMIC.yaml @@ -5,7 +5,7 @@ GroupDescription: This is a small cluster to test LSU_SuperMIC integration Resources: OSG_US_LSU_SuperMIC: Active: false - ID : 989 + ID: 989 Description: The Hosted CE serving LSU_SuperMIC ContactLists: Administrative Contact: @@ -38,7 +38,7 @@ Resources: Resources: LSU-SuperMIC-CE1: Active: true - ID : 1259 + ID: 1373 Description: The Hosted CE serving LSU_SuperMIC ContactLists: Administrative Contact: diff --git a/topology/Massachusetts Green High Performance Computing Center/FACILITY.yaml b/topology/Massachusetts Green High Performance Computing Center/FACILITY.yaml new file mode 100644 index 000000000..d83681850 --- /dev/null +++ b/topology/Massachusetts Green High Performance Computing Center/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10204 diff --git a/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCCachingInfrastructure.yaml b/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCCachingInfrastructure.yaml new file mode 100644 index 000000000..da4d1f9b2 --- /dev/null +++ b/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCCachingInfrastructure.yaml @@ -0,0 +1,24 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Caching infrastructure in MGHPCC +GroupID: 1318 +Resources: + MGHPCC_NRP_OSDF_CACHE: + Active: true + Description: MGHPCC NRP OSDF Cache + ID: 1348 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Secondary: + ID: OSG1000009 + Name: Huijun Zhu + FQDN: mghpcc-cache.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=mghpcc-cache.nationalresearchplatform.org + Services: + XRootD cache server: + Description: MGHPCC NRP OSDF Cache + AllowedVOs: + - ANY diff --git a/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCCachingInfrastructure_downtime.yaml b/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCCachingInfrastructure_downtime.yaml new file mode 100644 index 000000000..05e38b916 --- /dev/null +++ b/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCCachingInfrastructure_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1511539370 + Description: DataCenter maintenace + Severity: Outage + StartTime: Jun 04, 2023 19:30 +0000 + EndTime: Jun 17, 2023 19:30 +0000 + CreatedTime: Jun 07, 2023 16:05 +0000 + ResourceName: MGHPCC_NRP_OSDF_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCOrigin.yaml b/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCOrigin.yaml new file mode 100644 index 000000000..353667bc2 --- /dev/null +++ b/topology/Massachusetts Green High Performance Computing Center/NRP/MGHPCCOrigin.yaml @@ -0,0 +1,24 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Origin infrastructure in MGHPCC +GroupID: 1334 +Resources: + MGHPCC_NRP_OSDF_ORIGIN: + Active: true + Description: MGHPCC NRP OSDF Origin + ID: 1394 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Secondary: + ID: OSG1000009 + Name: Huijun Zhu + FQDN: mghpcc-origin.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=mghpcc-origin.nationalresearchplatform.org + Services: + XRootD origin server: + Description: MGHPCC NRP OSDF Origin + AllowedVOs: + - ANY diff --git a/topology/Massachusetts Green High Performance Computing Center/NRP/SITE.yaml b/topology/Massachusetts Green High Performance Computing Center/NRP/SITE.yaml new file mode 100644 index 000000000..007c16f66 --- /dev/null +++ b/topology/Massachusetts Green High Performance Computing Center/NRP/SITE.yaml @@ -0,0 +1,8 @@ +AddressLine1: 100 Bigelow Street, +City: Holyoke +State: MA +Country: United States +ID: 10347 +Latitude: 42.20268901460256 +Longitude: -72.60739765767043 +Zipcode: 01040 diff --git a/topology/Massachusetts Institute of Technology/MIT_SUBMIT/MIT_SUBMIT.yaml b/topology/Massachusetts Institute of Technology/MIT_SUBMIT/MIT_SUBMIT.yaml index 118a94ded..23f003dac 100644 --- a/topology/Massachusetts Institute of Technology/MIT_SUBMIT/MIT_SUBMIT.yaml +++ b/topology/Massachusetts Institute of Technology/MIT_SUBMIT/MIT_SUBMIT.yaml @@ -14,8 +14,8 @@ Resources: ID: 21d33b592da6f41088bdcea5b1ab6167566f9030 Name: Zhangqier Wang Description: This is the submission node to MIT on-campus, OSG, and CMS resources. - FQDN: submit.mit.edu - DN: /DC=org/DC=incommon/C=US/ST=Massachusetts/O=Massachusetts Institute of Technology/OU=Information Systems & Technology/CN=submit04.mit.edu + FQDN: submit04.mit.edu + DN: /DC=org/DC=incommon/C=US/ST=Massachusetts/O=Massachusetts Institute of Technology/CN=submit04.mit.edu ID: 832 Services: Submit Node: diff --git a/topology/National Center for High-performance Computing/FACILITY.yaml b/topology/National Center for High-performance Computing/FACILITY.yaml new file mode 100644 index 000000000..755155182 --- /dev/null +++ b/topology/National Center for High-performance Computing/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10208 diff --git a/topology/National Center for High-performance Computing/NCHC/NCHC-NCloud.yaml b/topology/National Center for High-performance Computing/NCHC/NCHC-NCloud.yaml new file mode 100644 index 000000000..13b28ad0d --- /dev/null +++ b/topology/National Center for High-performance Computing/NCHC/NCHC-NCloud.yaml @@ -0,0 +1,45 @@ +Disable: false +Production: true +SupportCenter: Self Supported + +GroupDescription: IGWN on the N-Cloud. +GroupID: 1349 + +Resources: + NCHC-CMS-CE: + Active: false + Description: IGWN on the N-Cloud. + ID: 1433 + ContactLists: + Administrative Contact: + Primary: + Name: Chun-Yu Lin + ID: 383ae4982bef24cc546b47c4e4f2e52b57e32da6 + + Security Contact: + Primary: + Name: Chun-Yu Lin + ID: 383ae4982bef24cc546b47c4e4f2e52b57e32da6 + + FQDN: ui.grid.nchc.org.tw + + Services: + CE: + Description: HTCondor-CE + + VOOwnership: + LIGO: 100 + # CMS: 100 + + # WLCGInformation: + # APELNormalFactor: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 diff --git a/topology/National Center for High-performance Computing/NCHC/SITE.yaml b/topology/National Center for High-performance Computing/NCHC/SITE.yaml new file mode 100644 index 000000000..b7ce46b62 --- /dev/null +++ b/topology/National Center for High-performance Computing/NCHC/SITE.yaml @@ -0,0 +1,7 @@ +LongName: National Center for High-performance Computing +Description: National Center for High-performance Computing, National Applied Research Laboratories +ID: 10359 +City: Hsinchu +Country: Taiwan +Latitude: 24.783 +Longitude: 120.996 diff --git a/topology/National Energy Research Scientific Computing Center/NERSC/NERSC-Infra.yaml b/topology/National Energy Research Scientific Computing Center/NERSC/NERSC-Infra.yaml new file mode 100644 index 000000000..81219d11b --- /dev/null +++ b/topology/National Energy Research Scientific Computing Center/NERSC/NERSC-Infra.yaml @@ -0,0 +1,94 @@ +Production: true +SupportCenter: Self Supported + +GroupDescription: NERSC Infrastructure (off-HPC-platform) + +GroupID: 1348 + +Resources: + NERSC-Infra-Frontier-Cache: + Active: true + Description: >- + This is a round robin DNS alias to the two Frontier-Squid instances. It is provided as the recommended + method for Frontier client configuration, which should use the hostname frontiercache.nersc.gov. + ID: 1441 + ContactLists: + Administrative Contact: + Primary: + Name: NERSC Infrastructure Services Group + ID: 642672e484cf4e5b326d5f84c1350ff102154637 + Security Contact: + Primary: + Name: NERSC Infrastructure Services Group + ID: 642672e484cf4e5b326d5f84c1350ff102154637 + Secondary: + Name: NERSC Security + ID: bd1429ebc743fc6bef0b7a3e9f373bce79ed0301 + + # Internal FQDN is frontiercache.nersc.gov + FQDN: frontiercache-ext.nersc.gov + Services: + Squid: + Description: Generic squid service + Details: + Monitored: true + VOOwnership: + NERSC: 100 + + NERSC-Infra-Squid1: + Active: true + Description: >- + This is a Frontier-Squid instance situated off the HPC platform. It is primary for all Frontier Cache + use, primary for off-HPC-platform CVMFS clients, and secondary (failover) for on-HPC-platform CVMFS clients. + ID: 1425 + ContactLists: + Administrative Contact: + Primary: + Name: NERSC Infrastructure Services Group + ID: 642672e484cf4e5b326d5f84c1350ff102154637 + Security Contact: + Primary: + Name: NERSC Infrastructure Services Group + ID: 642672e484cf4e5b326d5f84c1350ff102154637 + Secondary: + Name: NERSC Security + ID: bd1429ebc743fc6bef0b7a3e9f373bce79ed0301 + + # Internal FQDN is fs1.nersc.gov + FQDN: fs1-ext.nersc.gov + Services: + Squid: + Description: Generic squid service + Details: + Monitored: true + VOOwnership: + NERSC: 100 + + NERSC-Infra-Squid2: + Active: true + Description: >- + This is a Frontier-Squid instance situated off the HPC platform. It is primary for all Frontier Cache + use, primary for off-HPC-platform CVMFS clients, and secondary (failover) for on-HPC-platform CVMFS clients. + ID: 1426 + ContactLists: + Administrative Contact: + Primary: + Name: NERSC Infrastructure Services Group + ID: 642672e484cf4e5b326d5f84c1350ff102154637 + Security Contact: + Primary: + Name: NERSC Infrastructure Services Group + ID: 642672e484cf4e5b326d5f84c1350ff102154637 + Secondary: + Name: NERSC Security + ID: bd1429ebc743fc6bef0b7a3e9f373bce79ed0301 + + # Internal FQDN is fs2.nersc.gov + FQDN: fs2-ext.nersc.gov + Services: + Squid: + Description: Generic squid service + Details: + Monitored: true + VOOwnership: + NERSC: 100 diff --git a/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY.yaml b/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY.yaml index 6ef84ffba..61e14540d 100644 --- a/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY.yaml +++ b/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY.yaml @@ -36,7 +36,7 @@ Resources: Details: hidden: false SLATE_US_NMSU_DISCOVERY: - Active: true + Active: false ID: 1072 ContactLists: Administrative Contact: @@ -68,3 +68,58 @@ Resources: hidden: false Tags: - CC* + NMSU-Discovery-CE1: + Active: true + ID: 1386 + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + # FQDN is the fully qualified domain name of the host running this resource + FQDN: nmsu-discovery-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: NMSU Discovery hosted CE + Tags: + - CC* + + diff --git a/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY_downtime.yaml b/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY_downtime.yaml index 56258fee8..f5153f00d 100644 --- a/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY_downtime.yaml +++ b/topology/New Mexico State University/New Mexico State Discovery/NMSU_DISCOVERY_downtime.yaml @@ -48,4 +48,14 @@ ResourceName: SLATE_US_NMSU_DISCOVERY Services: - CE +- Class: SCHEDULED + ID: 1559162036 + Description: Biannual Maintenance + Severity: Outage + StartTime: Aug 01, 2023 15:00 +0000 + EndTime: Aug 16, 2023 06:59 +0000 + CreatedTime: Aug 01, 2023 18:56 +0000 + ResourceName: NMSU-Discovery-CE1 + Services: + - CE # --------------------------------------------------------- diff --git a/topology/Niels Bohr Institute/NBI/NBI_T3.yaml b/topology/Niels Bohr Institute/NBI/NBI_T3.yaml index a4ab8ab65..2dd2768c3 100644 --- a/topology/Niels Bohr Institute/NBI/NBI_T3.yaml +++ b/topology/Niels Bohr Institute/NBI/NBI_T3.yaml @@ -2,7 +2,7 @@ Production: true SupportCenter: Self Supported GroupDescription: IceCube Tier 3 located at the Niels Bohr Institute -GroupID: 509 +GroupID: 1316 Resources: IceCube_DK_NBI_T3_CE: diff --git a/topology/Oak Ridge National Laboratory/ORNL/ORNL_downtime.yaml b/topology/Oak Ridge National Laboratory/ORNL/ORNL_downtime.yaml index e99341c13..fa7b2f261 100644 --- a/topology/Oak Ridge National Laboratory/ORNL/ORNL_downtime.yaml +++ b/topology/Oak Ridge National Laboratory/ORNL/ORNL_downtime.yaml @@ -10,3 +10,15 @@ Services: - CE # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1507237621 + Description: Power work in the room/building + Severity: Outage + StartTime: Jun 05, 2023 14:00 +0000 + EndTime: Jun 06, 2023 23:00 +0000 + CreatedTime: Jun 02, 2023 16:36 +0000 + ResourceName: ORNL_ALICE + Services: + - CE +# --------------------------------------------------------- + diff --git a/topology/Ohio Supercomputer Center/OSC/OSC_OSG.yaml b/topology/Ohio Supercomputer Center/OSC/OSC_OSG.yaml index 2d09b96c1..174ddc91d 100644 --- a/topology/Ohio Supercomputer Center/OSC/OSC_OSG.yaml +++ b/topology/Ohio Supercomputer Center/OSC/OSC_OSG.yaml @@ -4,7 +4,7 @@ GroupID: 384 Production: true Resources: OSC_OSG_CE: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -37,7 +37,7 @@ Resources: VOOwnership: Nova: 100 OSC_OSG_CE_old: - Active: true + Active: false ContactLists: Administrative Contact: Primary: diff --git a/topology/Oral Roberts University/FACILITY.yaml b/topology/Oral Roberts University/FACILITY.yaml new file mode 100644 index 000000000..ca6335687 --- /dev/null +++ b/topology/Oral Roberts University/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10212 diff --git a/topology/Oral Roberts University/ORU - Computing Group/ORU-Titan.yaml b/topology/Oral Roberts University/ORU - Computing Group/ORU-Titan.yaml new file mode 100644 index 000000000..ad9013855 --- /dev/null +++ b/topology/Oral Roberts University/ORU - Computing Group/ORU-Titan.yaml @@ -0,0 +1,141 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: Oral Roberts University + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1361 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + ORU-Titan-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE serving ORU + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1462 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: oru-titan-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + # Tags: + # - + # - + Tags: + - CC* + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # HEPScore23Percentage: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # diff --git a/topology/Oral Roberts University/ORU - Computing Group/SITE.yaml b/topology/Oral Roberts University/ORU - Computing Group/SITE.yaml new file mode 100644 index 000000000..25b39dbe4 --- /dev/null +++ b/topology/Oral Roberts University/ORU - Computing Group/SITE.yaml @@ -0,0 +1,8 @@ +AddressLine1: 7777 S Lewis Ave +Country: United States +Description: Oral Roberts Universtiy +ID: 10366 +Latitude: 36.0508093 +Longitude: -95.9550171 +State: Oklahoma +Zipcode: '74171' diff --git a/topology/Penn State University/PSU LIGO/PSU-LIGO.yaml b/topology/Penn State University/PSU LIGO/PSU-LIGO.yaml index c91d5a2b8..ae9361d4a 100644 --- a/topology/Penn State University/PSU LIGO/PSU-LIGO.yaml +++ b/topology/Penn State University/PSU LIGO/PSU-LIGO.yaml @@ -1,27 +1,21 @@ Production: true SupportCenter: Self Supported -GroupDescription: This is a cluster for LIGO use at Penn State University +GroupDescription: This is a cluster for LIGO and OSG use at Penn State University GroupID: 1120 Resources: PSU-LIGO: Active: true - Description: This is a Hosted CE for LIGO use at Penn State. + Description: This is a Hosted CE for LIGO use at Penn State. It also has a subset of CC* nodes for OSG to use ID: 1172 ContactLists: Administrative Contact: Primary: - Name: Jeffrey Peterson - ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 - Secondary: Name: Jeffrey Michael Dost ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba Security Contact: Primary: - Name: Jeffrey Peterson - ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 - Secondary: Name: Jeffrey Michael Dost ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba @@ -29,11 +23,13 @@ Resources: Services: CE: - Description: Hosted CE for PSU-LIGO + Description: Hosted CE for PSU-LIGO and OSPool at PSU + Tags: + - CC* PSU-LIGO-CACHE: Active: false - Description: This is a cache for public and LIGO data at Penn State + Description: This is a cache for public and LIGO data at Penn State, restricted to the gwave cluster ID: 1304 ContactLists: Administrative Contact: diff --git a/topology/Penn State University/PSU RC/PSU-submit.yaml b/topology/Penn State University/PSU RC/PSU-submit.yaml new file mode 100644 index 000000000..2e59fb30a --- /dev/null +++ b/topology/Penn State University/PSU RC/PSU-submit.yaml @@ -0,0 +1,40 @@ +Production: true +SupportCenter: Self Supported +GroupDescription: This is an OSPool Access Point on our RC Cluster +GroupID: 1364 + +Resources: + PSU-Submit01: + Active: true + Description: This is an OSPool Access Point for PSU RC. + ID: 1470 + ContactLists: + Administrative Contact: + Primary: + Name: Robert Sand + ID: OSG1000504 + Secondary: + Name: Chad Bahrmann + ID: OSG1000509 + Tertiary: + Name: Gary Skouson + ID: OSG1000506 + + Security Contact: + Primary: + Name: Robert Sand + ID: OSG1000504 + Secondary: + Name: Chad Bahrmann + ID: OSG1000509 + Tertiary: + Name: Gary Skouson + ID: OSG1000506 + + FQDN: submit01.hpc.psu.edu + # valid services are listed in topology/services.yaml with the format ": " + Services: + Submit Node: + Description: An OSPool Access Point to submit jobs to the OSPool and PSU LIGO Site. + Tags: + - OSPool diff --git a/topology/Penn State University/PSU RC/SITE.yaml b/topology/Penn State University/PSU RC/SITE.yaml new file mode 100644 index 000000000..b80378919 --- /dev/null +++ b/topology/Penn State University/PSU RC/SITE.yaml @@ -0,0 +1,7 @@ +City: University Park +Country: United States +ID: 10035 +Latitude: 40.806956 +Longitude: -77.86281 +State: PA +Zipcode: '16802' diff --git a/topology/Pittsburgh Supercomputing Center/PSC - Bridges/Bridges.yaml b/topology/Pittsburgh Supercomputing Center/PSC - Bridges/Bridges.yaml index 461770992..1262634b0 100644 --- a/topology/Pittsburgh Supercomputing Center/PSC - Bridges/Bridges.yaml +++ b/topology/Pittsburgh Supercomputing Center/PSC - Bridges/Bridges.yaml @@ -1,7 +1,7 @@ Disable: false Production: true SupportCenter: Self Supported -GroupID: 506 +GroupID: 1315 GroupDescription: The PSC-Bridges cluster Resources: OSG_US_PSC_Bridges: diff --git a/topology/Portland State University/PDX-OIT/PDX-Coeus.yaml b/topology/Portland State University/PDX-OIT/PDX-Coeus.yaml index 163dfbd11..e3c6261b1 100644 --- a/topology/Portland State University/PDX-OIT/PDX-Coeus.yaml +++ b/topology/Portland State University/PDX-OIT/PDX-Coeus.yaml @@ -169,7 +169,7 @@ Resources: Name: Jim Stapleton ID: OSG1000191 FQDN: coeus.rc.pdx.edu - ID: 1323 + ID: 1372 Services: Squid: Description: squid proxy server diff --git a/topology/Purdue University/Purdue CMS/Purdue.yaml b/topology/Purdue University/Purdue CMS/Purdue.yaml index c44124576..26723a6cd 100644 --- a/topology/Purdue University/Purdue CMS/Purdue.yaml +++ b/topology/Purdue University/Purdue CMS/Purdue.yaml @@ -38,9 +38,9 @@ Resources: APELNormalFactor: 15.07 AccountingName: T2_US_Purdue HEPSPEC: 3929 - InteropAccounting: true - InteropBDII: true - InteropMonitoring: true + InteropAccounting: false + InteropBDII: false + InteropMonitoring: false KSI2KMax: 500 KSI2KMin: 100 StorageCapacityMax: 0 @@ -135,7 +135,7 @@ Resources: StorageCapacityMin: 1 TapeCapacity: 5.5 Purdue-Halstead: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -203,7 +203,7 @@ Resources: Compute Element for Purdue Brown cluster (opportunistic). https://www.rcac.purdue.edu/compute/brown FQDN: brown-osg.rcac.purdue.edu - ID: 929 + ID: 1378 Services: CE: Description: Compute Element @@ -269,6 +269,51 @@ Resources: StorageCapacityMax: 5.5 StorageCapacityMin: 1 TapeCapacity: 5.5 + Purdue-Negishi: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: b120c1c48f06940b0604f4a2803fde522d0d0595 + Name: Stefan Piperov + Secondary: + ID: f11eeb608313b242e14f5aee602b3aff91839ace + Name: Erik Gough + Tertiary: + ID: c47d0e3b7d3a3de938261bd44ae692af60eedd4b + Name: Nick Smith + Security Contact: + Primary: + ID: b120c1c48f06940b0604f4a2803fde522d0d0595 + Name: Stefan Piperov + Secondary: + ID: f11eeb608313b242e14f5aee602b3aff91839ace + Name: Erik Gough + Description: |- + Compute Element for Purdue Negishi cluster. + https://www.rcac.purdue.edu/compute/negishi + FQDN: osg.negishi.rcac.purdue.edu + ID: 1417 + Services: + CE: + Description: Compute Element + Details: + hidden: false + sam_uri: htcondor://osg.negishi.rcac.purdue.edu:9619/osg.negishi.rcac.purdue.edu + VOOwnership: + CMS: 0 + WLCGInformation: + APELNormalFactor: 19.33 + AccountingName: T2_US_Purdue + HEPSPEC: 85 + InteropAccounting: true + InteropBDII: true + InteropMonitoring: true + KSI2KMax: 500 + KSI2KMin: 100 + StorageCapacityMax: 5.5 + StorageCapacityMin: 1 + TapeCapacity: 5.5 Purdue-Hadoop-SE-Gridftp: Active: true ContactLists: diff --git a/topology/Purdue University/Purdue CMS/Purdue_downtime.yaml b/topology/Purdue University/Purdue CMS/Purdue_downtime.yaml index f19f6e2f3..bd866483c 100644 --- a/topology/Purdue University/Purdue CMS/Purdue_downtime.yaml +++ b/topology/Purdue University/Purdue CMS/Purdue_downtime.yaml @@ -1405,3 +1405,432 @@ Services: - net.perfSONAR.Latency # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1298185507 + Description: Cluster maintenance + Severity: Outage + StartTime: Oct 04, 2022 12:00 +0000 + EndTime: Oct 05, 2022 21:00 +0000 + CreatedTime: Oct 03, 2022 17:35 +0000 + ResourceName: Purdue-Bell + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813083 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Bell + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813084 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Brown + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813085 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Hadoop-CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813086 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Hadoop-SE-Gridftp + Services: + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813087 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Halstead + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813088 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Hammer + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813089 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: Purdue-Rice + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813090 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: T2_US_Purdue_Squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813091 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: T2_US_Purdue_Squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813092 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: US-Purdue BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1355813093 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 15, 2022 06:00 +0000 + EndTime: Dec 17, 2022 04:59 +0000 + CreatedTime: Dec 09, 2022 10:21 +0000 + ResourceName: US-Purdue LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894592 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Bell + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894593 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Brown + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894594 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Hadoop-CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894595 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Hadoop-SE-Gridftp + Services: + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894596 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Halstead + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894597 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Hammer + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894598 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: Purdue-Rice + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894599 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: T2_US_Purdue_Squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894600 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: T2_US_Purdue_Squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894601 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: US-Purdue BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1363894602 + Description: Local storage system migration + Severity: Intermittent Outage + StartTime: Dec 19, 2022 19:00 +0000 + EndTime: Dec 21, 2022 01:00 +0000 + CreatedTime: Dec 18, 2022 18:50 +0000 + ResourceName: US-Purdue LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1437969519 + Description: Cluster maintenance + Severity: Severe + StartTime: Mar 15, 2023 12:00 +0000 + EndTime: Mar 15, 2023 21:00 +0000 + CreatedTime: Mar 14, 2023 12:29 +0000 + ResourceName: Purdue-Negishi + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1473691546 + Description: Cluster maintenance + Severity: Outage + StartTime: Apr 26, 2023 11:00 +0000 + EndTime: Apr 26, 2023 21:00 +0000 + CreatedTime: Apr 24, 2023 20:45 +0000 + ResourceName: Purdue-Negishi + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1521849575 + Description: Cluster maintenance + Severity: Outage + StartTime: Jun 21, 2023 11:00 +0000 + EndTime: Jun 21, 2023 23:00 +0000 + CreatedTime: Jun 19, 2023 14:29 +0000 + ResourceName: Purdue-Negishi + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1521864975 + Description: Cluster maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jun 19, 2023 14:54 +0000 + ResourceName: Purdue-Hammer + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037973 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Bell + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037974 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Brown + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037975 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Hadoop-CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037976 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Hadoop-SE-Gridftp + Services: + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037977 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Halstead + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037978 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Hammer + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037979 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Negishi + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037980 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: Purdue-Rice + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037981 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: T2_US_Purdue_Squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037982 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: T2_US_Purdue_Squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037983 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: US-Purdue BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542037984 + Description: Cluster and storage maintenance + Severity: Outage + StartTime: Jul 19, 2023 11:00 +0000 + EndTime: Jul 19, 2023 23:00 +0000 + CreatedTime: Jul 12, 2023 23:16 +0000 + ResourceName: US-Purdue LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- diff --git a/topology/Rhodes College/FACILITY.yaml b/topology/Rhodes College/FACILITY.yaml new file mode 100644 index 000000000..0eea915b4 --- /dev/null +++ b/topology/Rhodes College/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10203 diff --git a/topology/Rhodes College/Rhodes-HPC/Rhodes-HPC.yaml b/topology/Rhodes College/Rhodes-HPC/Rhodes-HPC.yaml new file mode 100644 index 000000000..ca1cc32f0 --- /dev/null +++ b/topology/Rhodes College/Rhodes-HPC/Rhodes-HPC.yaml @@ -0,0 +1,139 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: Rhodes College HPC Cluster + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1328 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + Rhodes-HPC-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE serving Rhodes-HPC + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1384 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: rhodes-hpc-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + Tags: + - CC* + # - + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # ... + diff --git a/topology/Rhodes College/Rhodes-HPC/SITE.yaml b/topology/Rhodes College/Rhodes-HPC/SITE.yaml new file mode 100644 index 000000000..cf79a3f28 --- /dev/null +++ b/topology/Rhodes College/Rhodes-HPC/SITE.yaml @@ -0,0 +1,27 @@ +# LongName is the expanded name of the site +LongName: Rhodes College +# Description is a brief description of your site +Description: Rhodes College + +# If you have an up-to-date local git clone, fill ID with the output from `bin/next_site_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +ID: 10345 + +# AddressLine1 is the street address of the site +AddressLine1: 2000 North Parkway +### AddressLine2 (optional) is the second line of the street address +# AddressLine2: Room 101 +# City is the city the site is located in +City: Memphis + +# Country is the country the site is located in +Country: United States +### State (optional) is the state or province the site is located in +# State: Wisconsin +### Zipcode (optional) is the zipcode/postal code of the site +# Zipcode: "01234" + +# Latitude is the latitude of the site (positive values are in the northern hemisphere) +Latitude: 35.1555409 +# Longitude is the longitude of the site (positive values are in the eastern hemisphere) +Longitude: -89.991518 diff --git a/topology/Rice University/Rice-CRC/Rice-CRC-RAPID.yaml b/topology/Rice University/Rice-CRC/Rice-CRC-RAPID.yaml index 23ad04d79..10c142a36 100644 --- a/topology/Rice University/Rice-CRC/Rice-CRC-RAPID.yaml +++ b/topology/Rice University/Rice-CRC/Rice-CRC-RAPID.yaml @@ -4,7 +4,7 @@ SupportCenter: Self Supported GroupDescription: | RAPID is a Kubernetes cluster at Rice University's Center for Research Computing -GroupID: 1104 +GroupID: 1319 Resources: Rice-RAPID-Backfill: Active: true diff --git a/topology/SingAREN/FACILITY.yaml b/topology/SingAREN/FACILITY.yaml new file mode 100644 index 000000000..6c01ee922 --- /dev/null +++ b/topology/SingAREN/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10210 diff --git a/topology/SingAREN/SingARENSingapore/SITE.yaml b/topology/SingAREN/SingARENSingapore/SITE.yaml new file mode 100644 index 000000000..07ca007aa --- /dev/null +++ b/topology/SingAREN/SingARENSingapore/SITE.yaml @@ -0,0 +1,5 @@ +ID: 10362 +LongName: SingAREN data center +Description: Backbone location of SingAREN +Latitude: 32.884310 +Longitude: -117.239614 diff --git a/topology/SingAREN/SingARENSingapore/SingARENSingaporeInfrastructure.yaml b/topology/SingAREN/SingARENSingapore/SingARENSingaporeInfrastructure.yaml new file mode 100644 index 000000000..b7749c930 --- /dev/null +++ b/topology/SingAREN/SingARENSingapore/SingARENSingaporeInfrastructure.yaml @@ -0,0 +1,25 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Services located at the SingAREN +GroupID: 1353 +Resources: + SINGAPORE_INTERNET2_OSDF_CACHE: + Active: true + Description: SingAREN Cache + ID: 1443 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: singapore.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=singapore.nationalresearchplatform.org + Services: + XRootD cache server: + Description: SingAREN Cache + AllowedVOs: + - ANY diff --git a/topology/SingAREN/SingARENSingapore/SingARENSingaporeInfrastructure_downtime.yaml b/topology/SingAREN/SingARENSingapore/SingARENSingaporeInfrastructure_downtime.yaml new file mode 100644 index 000000000..6aebec74a --- /dev/null +++ b/topology/SingAREN/SingARENSingapore/SingARENSingaporeInfrastructure_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1560891865 + Description: going to DC + Severity: Outage + StartTime: Aug 03, 2023 19:30 +0000 + EndTime: Aug 31, 2023 19:39 +0000 + CreatedTime: Aug 03, 2023 18:59 +0000 + ResourceName: SINGAPORE_INTERNET2_OSDF_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/Southern Illinois University Edwardsville/SIUE - CC/SIUE-CC-production.yaml b/topology/Southern Illinois University Edwardsville/SIUE - CC/SIUE-CC-production.yaml index c995f5df9..23a037f46 100644 --- a/topology/Southern Illinois University Edwardsville/SIUE - CC/SIUE-CC-production.yaml +++ b/topology/Southern Illinois University Edwardsville/SIUE - CC/SIUE-CC-production.yaml @@ -10,15 +10,15 @@ Resources: ContactLists: Administrative Contact: Primary: - Name: Mitchell Walls - ID: 2ae2fbabc8396da0f2df896f62b15182054d9fcb + Name: SIUE Site Admin List + ID: d54c0865dbc20c85fb69557163df066bc92709fb Secondary: Name: Daniel Chace ID: 78a6b3768f39e5e35034d0981288e775e20eba5f Security Contact: Primary: - Name: Mitchell Walls - ID: 2ae2fbabc8396da0f2df896f62b15182054d9fcb + Name: SIUE Site Admin List + ID: d54c0865dbc20c85fb69557163df066bc92709fb Secondary: Name: Daniel Chace ID: 78a6b3768f39e5e35034d0981288e775e20eba5f diff --git a/topology/Southern Illinois University Edwardsville/SIUE - OS/SIUE-OS-production.yaml b/topology/Southern Illinois University Edwardsville/SIUE - OS/SIUE-OS-production.yaml index 11c540609..f281714d3 100644 --- a/topology/Southern Illinois University Edwardsville/SIUE - OS/SIUE-OS-production.yaml +++ b/topology/Southern Illinois University Edwardsville/SIUE - OS/SIUE-OS-production.yaml @@ -10,15 +10,15 @@ Resources: ContactLists: Administrative Contact: Primary: - Name: Mitchell Walls - ID: 2ae2fbabc8396da0f2df896f62b15182054d9fcb + Name: SIUE Site Admin List + ID: d54c0865dbc20c85fb69557163df066bc92709fb Secondary: Name: Daniel Chace ID: 78a6b3768f39e5e35034d0981288e775e20eba5f Security Contact: Primary: - Name: Mitchell Walls - ID: 2ae2fbabc8396da0f2df896f62b15182054d9fcb + Name: SIUE Site Admin List + ID: d54c0865dbc20c85fb69557163df066bc92709fb Secondary: Name: Daniel Chace ID: 78a6b3768f39e5e35034d0981288e775e20eba5f diff --git a/topology/Swinburne University of Technology/SUT - OzStar/SUT-OzStar.yaml b/topology/Swinburne University of Technology/SUT - OzStar/SUT-OzStar.yaml index 6e1cffb9e..4228cf2d3 100644 --- a/topology/Swinburne University of Technology/SUT - OzStar/SUT-OzStar.yaml +++ b/topology/Swinburne University of Technology/SUT - OzStar/SUT-OzStar.yaml @@ -121,7 +121,7 @@ Resources: SUT-STASHCACHE: Active: true - ID: 1129 + ID: 1357 ContactLists: # Administrative Contact is one to three people to contact regarding administrative issues Administrative Contact: diff --git a/topology/Tata Institute of Fundamental Research/FACILITY.yaml b/topology/Tata Institute of Fundamental Research/FACILITY.yaml new file mode 100644 index 000000000..50a86c931 --- /dev/null +++ b/topology/Tata Institute of Fundamental Research/FACILITY.yaml @@ -0,0 +1,2 @@ +--- +ID: 10209 diff --git a/topology/Tata Institute of Fundamental Research/INO-TIFR/IN_TIFR.yaml b/topology/Tata Institute of Fundamental Research/INO-TIFR/IN_TIFR.yaml new file mode 100644 index 000000000..2c4deed27 --- /dev/null +++ b/topology/Tata Institute of Fundamental Research/INO-TIFR/IN_TIFR.yaml @@ -0,0 +1,29 @@ +--- +Production: true +SupportCenter: Self Supported +GroupDescription: This is a cluster at TIFR for the DUNE project +GroupID: 1351 +Resources: + DUNE-IN-TIFR-SIMCLU-CE: + Active: true + Description: This is a CE at TIFR serving DUNE + ID: 1435 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000309 + Name: Nagaraj Panyam + Secondary: + ID: eb45993aa7d43359a5a55fcc749b2697196753cd + Name: DUNE TIFR admins + Security Contact: + Primary: + ID: OSG1000309 + Name: Nagaraj Panyam + Secondary: + ID: eb45993aa7d43359a5a55fcc749b2697196753cd + Name: DUNE TIFR admins + FQDN: simclu-ce.ino.tifr.res.in + Services: + CE: + Description: OSG HTCondor-CE serving DUNE diff --git a/topology/Tata Institute of Fundamental Research/INO-TIFR/SITE.yaml b/topology/Tata Institute of Fundamental Research/INO-TIFR/SITE.yaml new file mode 100644 index 000000000..59c1cc16a --- /dev/null +++ b/topology/Tata Institute of Fundamental Research/INO-TIFR/SITE.yaml @@ -0,0 +1,13 @@ +--- +LongName: >- + India-based Neutrino Observatory (INO) at Tata Institute of + Fundamental Research (TIFR) +Description: 'INO Simulation Cluster at TIFR, with OSG-CE and SE' +ID: 10361 + +AddressLine1: Dr Homi Bhabha Road, Colaba +City: Mumbai +Country: India + +Latitude: 18.90757 +Longitude: 72.80802 diff --git a/topology/Texas Advanced Computing Center/TACC-PATH/SITE.yaml b/topology/Texas Advanced Computing Center/TACC-PATH/SITE.yaml new file mode 100644 index 000000000..ec69fcd07 --- /dev/null +++ b/topology/Texas Advanced Computing Center/TACC-PATH/SITE.yaml @@ -0,0 +1,16 @@ +LongName: PATh Resources at Texas Advanced Computing Center +Description: >- + Resources used for the PATh Facility located at the + Texas Advanced Computing Center + +ID: 10360 + +AddressLine1: 1210 W. Dayton St +City: Austin + +Country: United States +State: Texas +Zipcode: "78758" + +Latitude: 30.390170 +Longitude: -97.726038 diff --git a/topology/Texas Advanced Computing Center/TACC-PATH/TACC-PATH.yaml b/topology/Texas Advanced Computing Center/TACC-PATH/TACC-PATH.yaml new file mode 100644 index 000000000..9fdf70c29 --- /dev/null +++ b/topology/Texas Advanced Computing Center/TACC-PATH/TACC-PATH.yaml @@ -0,0 +1,29 @@ +Production: true +SupportCenter: Self Supported +GroupDescription: PATh facility resources located at TACC +GroupID: 1347 + +Resources: + TACC-PATH-EP: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + Security Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Description: PATh facility EP located at TACC + FQDN: tacc-svc-1.facility.path-cc.io + ID: 1424 + Services: + Execution Endpoint: + Description: Backfill containers running in the PATh facility diff --git a/topology/The College of New Jersey/TCNJ - ELSA/ELSA.yaml b/topology/The College of New Jersey/TCNJ - ELSA/ELSA.yaml index e4d4ee307..5cba1a33f 100644 --- a/topology/The College of New Jersey/TCNJ - ELSA/ELSA.yaml +++ b/topology/The College of New Jersey/TCNJ - ELSA/ELSA.yaml @@ -59,8 +59,8 @@ Resources: Tags: - CC* TCNJ-ELSA: - ID: 1137 - Active: true + ID: 1358 + Active: false Description: The Hosted CE serving TCNJ-ELSA ContactLists: Administrative Contact: @@ -85,3 +85,24 @@ Resources: hidden: false Tags: - CC* + TCNJ-ELSA-CE2: + ID: 1381 + Active: true + Description: The Hosted CE2 serving TCNJ-ELSA + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + FQDN: tcnj-elsa-ce2.svc.opensciencegrid.org + Services: + CE: + Description: TCNJ-ELSA Hosted CE2 + Details: + hidden: false + Tags: + - CC* diff --git a/topology/The Ohio State University/OSU-CMS/osu-cms.yaml b/topology/The Ohio State University/OSU-CMS/osu-cms.yaml index 7f667a35d..b1a5e5b6c 100644 --- a/topology/The Ohio State University/OSU-CMS/osu-cms.yaml +++ b/topology/The Ohio State University/OSU-CMS/osu-cms.yaml @@ -7,21 +7,21 @@ Resources: ContactLists: Administrative Contact: Primary: - ID: bbb60851fbed5d63126b88da5a74c0a1903b0ea9 - Name: Stanley Durkin + ID: OSG1000359 + Name: Christopher Hill Secondary: - ID: 103a711e34a19f9b39a07d443807c84c832c8d29 - Name: Kai Wei + ID: OSG1000354 + Name: Matthew Joyce Tertiary: ID: ac72da817ce3d820895e1ffaa498084b5aa66680 Name: Michael Carrigan Security Contact: Primary: - ID: bbb60851fbed5d63126b88da5a74c0a1903b0ea9 - Name: Stanley Durkin + ID: OSG1000359 + Name: Christopher Hill Secondary: - ID: 103a711e34a19f9b39a07d443807c84c832c8d29 - Name: Kai Wei + ID: OSG1000354 + Name: Matthew Joyce Tertiary: ID: ac72da817ce3d820895e1ffaa498084b5aa66680 Name: Michael Carrigan diff --git a/topology/Thomas Jefferson National Accelerator Facility/JLAB/JLab-Farm.yaml b/topology/Thomas Jefferson National Accelerator Facility/JLAB/JLab-Farm.yaml index 3596b66d0..073f8af1b 100644 --- a/topology/Thomas Jefferson National Accelerator Facility/JLAB/JLab-Farm.yaml +++ b/topology/Thomas Jefferson National Accelerator Facility/JLAB/JLab-Farm.yaml @@ -103,7 +103,35 @@ Resources: Description: Submit node for JLab FQDN: scosg2202.jlab.org DN: /DC=org/DC=incommon/C=US/ST=Virginia/L=Newport News/O=Thomas Jefferson National Accelerator Facility/OU=SciComp/CN=scosg2202.jlab.org - ID: 1297 + ID: 1367 + Services: + Submit Node: + Description: OSG Submission Node + Details: + hidden: false + VOOwnership: + JLab: 100 + Tags: + - OSPool + + osg-eic: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: 818acb7ebcd1865a17551799f0cfeb5256e0db20 + Name: Kurt Strosahl + Secondary: + ID: ea9db644eb6f8632cf87fd2cbac8a6e393c21f71 + Name: Wesley Moore + Security Contact: + Primary: + ID: 818acb7ebcd1865a17551799f0cfeb5256e0db20 + Name: Kurt Strosahl + Description: Submit node for JLab + FQDN: osg-eic.jlab.org + DN: /DC=org/DC=incommon/C=US/ST=Virginia/L=Newport News/O=Thomas Jefferson National Accelerator Facility/OU=SciComp/CN=osg-eic.jlab.org + ID: 1452 Services: Submit Node: Description: OSG Submission Node @@ -183,5 +211,29 @@ Resources: hidden: false VOOwnership: JLab: 100 + + JLab-FARM-CLAS-CE: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: 818acb7ebcd1865a17551799f0cfeb5256e0db20 + Name: Kurt Strosahl + Security Contact: + Primary: + ID: ea9db644eb6f8632cf87fd2cbac8a6e393c21f71 + Name: Wesley Moore + Description: HTcondor-CE server for JLab-FARM CLAS collaboration + FQDN: osg-ce-2.jlab.org + FQDNAliases: + - osg-ce-2.jlab.org + ID: 1445 + Services: + CE: + Description: Compute Entry Point + Details: + hidden: false + VOOwnership: + JLab: 100 SupportCenter: Self Supported diff --git a/topology/Universidade Estadual Paulista/SPRACE/SPRACE.yaml b/topology/Universidade Estadual Paulista/SPRACE/SPRACE.yaml index 96d999cf6..b68c401c9 100644 --- a/topology/Universidade Estadual Paulista/SPRACE/SPRACE.yaml +++ b/topology/Universidade Estadual Paulista/SPRACE/SPRACE.yaml @@ -1,7 +1,34 @@ -GroupDescription: (No resource group description) +GroupDescription: SPRACE Resources GroupID: 99 Production: true -Resources: +Resources: + SPRACE_OSDF_CACHE: + Active: true + Description: SPRACE OSDF cache + ID: 1473 + ContactLists: + Administrative Contact: + Primary: + ID: 5e7717a6ad4154d0a8a3b3232080615e8c9e4351 + Name: Marcio Antonio Costa + Secondary: + ID: 2f652c47255fc4d6b45f19667be57b8517ea006f + Name: Jadir Marra da Silva + Security Contact: + Primary: + ID: 5e7717a6ad4154d0a8a3b3232080615e8c9e4351 + Name: Marcio Antonio Costa + Secondary: + ID: 2f652c47255fc4d6b45f19667be57b8517ea006f + Name: Jadir Marra da Silva + FQDN: osdf-cache.sprace.org.br + DN: /C=BR/O=ANSP/OU=ANSPGrid CA/OU=Services/CN=osdf-cache.sprace.org.br + Services: + XRootD cache server: + Description: SPRACE OSDF cache + AllowedVOs: + - ANY + BR-Sprace BW: Active: true ContactLists: diff --git a/topology/Universidade Estadual Paulista/SPRACE/SPRACE_downtime.yaml b/topology/Universidade Estadual Paulista/SPRACE/SPRACE_downtime.yaml index da9a20f4b..6dd7f85f0 100644 --- a/topology/Universidade Estadual Paulista/SPRACE/SPRACE_downtime.yaml +++ b/topology/Universidade Estadual Paulista/SPRACE/SPRACE_downtime.yaml @@ -1454,3 +1454,1114 @@ Services: - SRMv2 # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1306862625 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: Oct 14, 2022 18:00 +0000 + EndTime: Oct 14, 2022 21:00 +0000 + CreatedTime: Oct 13, 2022 18:37 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1368007266 + Description: network outage + Severity: Outage + StartTime: Dec 23, 2022 13:05 +0000 + EndTime: Dec 24, 2022 13:05 +0000 + CreatedTime: Dec 23, 2022 13:05 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1368008787 + Description: network outage + Severity: Outage + StartTime: Dec 23, 2022 13:05 +0000 + EndTime: Dec 24, 2022 13:05 +0000 + CreatedTime: Dec 23, 2022 13:07 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1432325150 + Description: Power outage affecting campus + Severity: Outage + StartTime: Mar 06, 2023 15:00 +0000 + EndTime: Mar 10, 2023 12:30 +0000 + CreatedTime: Mar 07, 2023 23:41 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1432325151 + Description: Power outage affecting campus + Severity: Outage + StartTime: Mar 06, 2023 15:00 +0000 + EndTime: Mar 10, 2023 12:30 +0000 + CreatedTime: Mar 07, 2023 23:41 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1432325152 + Description: Power outage affecting campus + Severity: Outage + StartTime: Mar 06, 2023 15:00 +0000 + EndTime: Mar 10, 2023 12:30 +0000 + CreatedTime: Mar 07, 2023 23:41 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1432325153 + Description: Power outage affecting campus + Severity: Outage + StartTime: Mar 06, 2023 15:00 +0000 + EndTime: Mar 10, 2023 12:30 +0000 + CreatedTime: Mar 07, 2023 23:41 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1432325154 + Description: Power outage affecting campus + Severity: Outage + StartTime: Mar 06, 2023 15:00 +0000 + EndTime: Mar 10, 2023 12:30 +0000 + CreatedTime: Mar 07, 2023 23:41 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1432325155 + Description: Power outage affecting campus + Severity: Outage + StartTime: Mar 06, 2023 15:00 +0000 + EndTime: Mar 10, 2023 12:30 +0000 + CreatedTime: Mar 07, 2023 23:41 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1434465621 + Description: Maintenance after a power outage + Severity: Intermittent Outage + StartTime: Mar 10, 2023 11:08 +0000 + EndTime: Mar 10, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 11:09 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1434468309 + Description: Maintenance after a power outage + Severity: Intermittent Outage + StartTime: Mar 10, 2023 11:08 +0000 + EndTime: Mar 10, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 11:13 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1434469637 + Description: Maintenance after a power outage + Severity: Intermittent Outage + StartTime: Mar 10, 2023 11:08 +0000 + EndTime: Mar 10, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 11:16 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1434470636 + Description: Maintenance after a power outage + Severity: Intermittent Outage + StartTime: Mar 10, 2023 11:08 +0000 + EndTime: Mar 10, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 11:17 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1434471741 + Description: Maintenance after a power outage + Severity: Intermittent Outage + StartTime: Mar 10, 2023 11:08 +0000 + EndTime: Mar 10, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 11:19 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1434474091 + Description: Maintenance after a power outage + Severity: Intermittent Outage + StartTime: Mar 10, 2023 11:08 +0000 + EndTime: Mar 10, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 11:23 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1434755808 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 10, 2023 21:00 +0000 + EndTime: Mar 13, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 19:13 +0000 + ResourceName: SPRACE + Services: + - CE +# ------------------------------ +- Class: SCHEDULED + ID: 1434756943 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 10, 2023 21:00 +0000 + EndTime: Mar 13, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 19:14 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1434758354 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 10, 2023 21:00 +0000 + EndTime: Mar 13, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 19:17 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1434761049 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 10, 2023 21:00 +0000 + EndTime: Mar 13, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 19:21 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1434762402 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 10, 2023 21:00 +0000 + EndTime: Mar 13, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 19:24 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1434764523 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 10, 2023 21:00 +0000 + EndTime: Mar 13, 2023 21:00 +0000 + CreatedTime: Mar 10, 2023 19:27 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1437395813 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 13, 2023 21:00 +0000 + EndTime: Mar 15, 2023 21:00 +0000 + CreatedTime: Mar 13, 2023 20:33 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1437396274 + Description: Still restoring services after power outage + Severity: Outage + StartTime: Mar 13, 2023 21:00 +0000 + EndTime: Mar 15, 2023 21:00 +0000 + CreatedTime: Mar 13, 2023 20:33 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1452185653 + Description: network outage + Severity: Outage + StartTime: Mar 30, 2023 23:22 +0000 + EndTime: Mar 31, 2023 18:00 +0000 + CreatedTime: Mar 30, 2023 23:22 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1452187170 + Description: network outage + Severity: Outage + StartTime: Mar 30, 2023 23:22 +0000 + EndTime: Mar 31, 2023 18:00 +0000 + CreatedTime: Mar 30, 2023 23:25 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1452196272 + Description: network outage + Severity: Outage + StartTime: Mar 30, 2023 23:22 +0000 + EndTime: Mar 31, 2023 18:00 +0000 + CreatedTime: Mar 30, 2023 23:40 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1452196908 + Description: network outage + Severity: Outage + StartTime: Mar 30, 2023 23:22 +0000 + EndTime: Mar 31, 2023 18:00 +0000 + CreatedTime: Mar 30, 2023 23:41 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1452198505 + Description: network outage + Severity: Outage + StartTime: Mar 30, 2023 23:22 +0000 + EndTime: Mar 31, 2023 18:00 +0000 + CreatedTime: Mar 30, 2023 23:44 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1452200226 + Description: network outage + Severity: Outage + StartTime: Mar 30, 2023 23:22 +0000 + EndTime: Mar 31, 2023 18:00 +0000 + CreatedTime: Mar 30, 2023 23:47 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481892234 + Description: 'network outage ' + Severity: Outage + StartTime: May 04, 2023 08:33 +0000 + EndTime: May 04, 2023 17:00 +0000 + CreatedTime: May 04, 2023 08:33 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481892235 + Description: 'network outage ' + Severity: Outage + StartTime: May 04, 2023 08:33 +0000 + EndTime: May 04, 2023 17:00 +0000 + CreatedTime: May 04, 2023 08:33 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481892236 + Description: 'network outage ' + Severity: Outage + StartTime: May 04, 2023 08:33 +0000 + EndTime: May 04, 2023 17:00 +0000 + CreatedTime: May 04, 2023 08:33 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481892237 + Description: 'network outage ' + Severity: Outage + StartTime: May 04, 2023 08:33 +0000 + EndTime: May 04, 2023 17:00 +0000 + CreatedTime: May 04, 2023 08:33 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481892238 + Description: 'network outage ' + Severity: Outage + StartTime: May 04, 2023 08:33 +0000 + EndTime: May 04, 2023 17:00 +0000 + CreatedTime: May 04, 2023 08:33 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481892239 + Description: 'network outage ' + Severity: Outage + StartTime: May 04, 2023 08:33 +0000 + EndTime: May 04, 2023 17:00 +0000 + CreatedTime: May 04, 2023 08:33 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482256605 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 17:00 +0000 + EndTime: May 04, 2023 23:00 +0000 + CreatedTime: May 04, 2023 18:41 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482256606 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 17:00 +0000 + EndTime: May 04, 2023 23:00 +0000 + CreatedTime: May 04, 2023 18:41 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482256607 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 17:00 +0000 + EndTime: May 04, 2023 23:00 +0000 + CreatedTime: May 04, 2023 18:41 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482256608 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 17:00 +0000 + EndTime: May 04, 2023 23:00 +0000 + CreatedTime: May 04, 2023 18:41 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482256609 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 17:00 +0000 + EndTime: May 04, 2023 23:00 +0000 + CreatedTime: May 04, 2023 18:41 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482256610 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 17:00 +0000 + EndTime: May 04, 2023 23:00 +0000 + CreatedTime: May 04, 2023 18:41 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482352347 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 23:00 +0000 + EndTime: May 05, 2023 17:00 +0000 + CreatedTime: May 04, 2023 21:20 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482352348 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 23:00 +0000 + EndTime: May 05, 2023 17:00 +0000 + CreatedTime: May 04, 2023 21:20 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482352349 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 23:00 +0000 + EndTime: May 05, 2023 17:00 +0000 + CreatedTime: May 04, 2023 21:20 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482352350 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 23:00 +0000 + EndTime: May 05, 2023 17:00 +0000 + CreatedTime: May 04, 2023 21:20 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482352351 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 23:00 +0000 + EndTime: May 05, 2023 17:00 +0000 + CreatedTime: May 04, 2023 21:20 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1482352352 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 04, 2023 23:00 +0000 + EndTime: May 05, 2023 17:00 +0000 + CreatedTime: May 04, 2023 21:20 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1492797123 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 16, 2023 21:47 +0000 + EndTime: May 17, 2023 15:00 +0000 + CreatedTime: May 16, 2023 23:28 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1492797124 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 16, 2023 21:47 +0000 + EndTime: May 17, 2023 15:00 +0000 + CreatedTime: May 16, 2023 23:28 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1492797125 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 16, 2023 21:47 +0000 + EndTime: May 17, 2023 15:00 +0000 + CreatedTime: May 16, 2023 23:28 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1492797126 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 16, 2023 21:47 +0000 + EndTime: May 17, 2023 15:00 +0000 + CreatedTime: May 16, 2023 23:28 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1492797127 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 16, 2023 21:47 +0000 + EndTime: May 17, 2023 15:00 +0000 + CreatedTime: May 16, 2023 23:28 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1492797128 + Description: network outage - fiber cut + Severity: Outage + StartTime: May 16, 2023 21:47 +0000 + EndTime: May 17, 2023 15:00 +0000 + CreatedTime: May 16, 2023 23:28 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1495054023 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: May 23, 2023 12:25 +0000 + EndTime: May 23, 2023 13:25 +0000 + CreatedTime: May 19, 2023 14:10 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1495054024 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: May 23, 2023 12:25 +0000 + EndTime: May 23, 2023 13:25 +0000 + CreatedTime: May 19, 2023 14:10 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1495054025 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: May 23, 2023 12:25 +0000 + EndTime: May 23, 2023 13:25 +0000 + CreatedTime: May 19, 2023 14:10 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1495054026 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: May 23, 2023 12:25 +0000 + EndTime: May 23, 2023 13:25 +0000 + CreatedTime: May 19, 2023 14:10 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1495054027 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: May 23, 2023 12:25 +0000 + EndTime: May 23, 2023 13:25 +0000 + CreatedTime: May 19, 2023 14:10 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1495054028 + Description: Uplink maintenance + Severity: No Significant Outage Expected + StartTime: May 23, 2023 12:25 +0000 + EndTime: May 23, 2023 13:25 +0000 + CreatedTime: May 19, 2023 14:10 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1518522339 + Description: network maintenance + Severity: Outage + StartTime: Jun 19, 2023 10:00 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: Jun 15, 2023 18:03 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1518522340 + Description: network maintenance + Severity: Outage + StartTime: Jun 19, 2023 10:00 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: Jun 15, 2023 18:03 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1518522341 + Description: network maintenance + Severity: Outage + StartTime: Jun 19, 2023 10:00 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: Jun 15, 2023 18:03 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1518522342 + Description: network maintenance + Severity: Outage + StartTime: Jun 19, 2023 10:00 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: Jun 15, 2023 18:03 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1518522343 + Description: network maintenance + Severity: Outage + StartTime: Jun 19, 2023 10:00 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: Jun 15, 2023 18:03 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1518522344 + Description: network maintenance + Severity: Outage + StartTime: Jun 19, 2023 10:00 +0000 + EndTime: Jun 20, 2023 22:00 +0000 + CreatedTime: Jun 15, 2023 18:03 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519028059 + Description: network outage - possible fiber cut + Severity: Outage + StartTime: Jun 16, 2023 07:00 +0000 + EndTime: Jun 16, 2023 15:00 +0000 + CreatedTime: Jun 16, 2023 08:06 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519028060 + Description: network outage - possible fiber cut + Severity: Outage + StartTime: Jun 16, 2023 07:00 +0000 + EndTime: Jun 16, 2023 15:00 +0000 + CreatedTime: Jun 16, 2023 08:06 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519028061 + Description: network outage - possible fiber cut + Severity: Outage + StartTime: Jun 16, 2023 07:00 +0000 + EndTime: Jun 16, 2023 15:00 +0000 + CreatedTime: Jun 16, 2023 08:06 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519028062 + Description: network outage - possible fiber cut + Severity: Outage + StartTime: Jun 16, 2023 07:00 +0000 + EndTime: Jun 16, 2023 15:00 +0000 + CreatedTime: Jun 16, 2023 08:06 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519028063 + Description: network outage - possible fiber cut + Severity: Outage + StartTime: Jun 16, 2023 07:00 +0000 + EndTime: Jun 16, 2023 15:00 +0000 + CreatedTime: Jun 16, 2023 08:06 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519028064 + Description: network outage - possible fiber cut + Severity: Outage + StartTime: Jun 16, 2023 07:00 +0000 + EndTime: Jun 16, 2023 15:00 +0000 + CreatedTime: Jun 16, 2023 08:06 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519269098 + Description: network outage - fiber cut + Severity: Outage + StartTime: Jun 16, 2023 15:00 +0000 + EndTime: Jun 16, 2023 21:00 +0000 + CreatedTime: Jun 16, 2023 14:48 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519269099 + Description: network outage - fiber cut + Severity: Outage + StartTime: Jun 16, 2023 15:00 +0000 + EndTime: Jun 16, 2023 21:00 +0000 + CreatedTime: Jun 16, 2023 14:48 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519269100 + Description: network outage - fiber cut + Severity: Outage + StartTime: Jun 16, 2023 15:00 +0000 + EndTime: Jun 16, 2023 21:00 +0000 + CreatedTime: Jun 16, 2023 14:48 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519269101 + Description: network outage - fiber cut + Severity: Outage + StartTime: Jun 16, 2023 15:00 +0000 + EndTime: Jun 16, 2023 21:00 +0000 + CreatedTime: Jun 16, 2023 14:48 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519269102 + Description: network outage - fiber cut + Severity: Outage + StartTime: Jun 16, 2023 15:00 +0000 + EndTime: Jun 16, 2023 21:00 +0000 + CreatedTime: Jun 16, 2023 14:48 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1519269103 + Description: network outage - fiber cut + Severity: Outage + StartTime: Jun 16, 2023 15:00 +0000 + EndTime: Jun 16, 2023 21:00 +0000 + CreatedTime: Jun 16, 2023 14:48 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522894916 + Description: Network maintenance + Severity: Outage + StartTime: Jun 20, 2023 22:00 +0000 + EndTime: Jun 21, 2023 22:00 +0000 + CreatedTime: Jun 20, 2023 19:31 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522894917 + Description: Network maintenance + Severity: Outage + StartTime: Jun 20, 2023 22:00 +0000 + EndTime: Jun 21, 2023 22:00 +0000 + CreatedTime: Jun 20, 2023 19:31 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522894918 + Description: Network maintenance + Severity: Outage + StartTime: Jun 20, 2023 22:00 +0000 + EndTime: Jun 21, 2023 22:00 +0000 + CreatedTime: Jun 20, 2023 19:31 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522894919 + Description: Network maintenance + Severity: Outage + StartTime: Jun 20, 2023 22:00 +0000 + EndTime: Jun 21, 2023 22:00 +0000 + CreatedTime: Jun 20, 2023 19:31 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522894920 + Description: Network maintenance + Severity: Outage + StartTime: Jun 20, 2023 22:00 +0000 + EndTime: Jun 21, 2023 22:00 +0000 + CreatedTime: Jun 20, 2023 19:31 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522894921 + Description: Network maintenance + Severity: Outage + StartTime: Jun 20, 2023 22:00 +0000 + EndTime: Jun 21, 2023 22:00 +0000 + CreatedTime: Jun 20, 2023 19:31 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1531220719 + Description: network outage + Severity: Outage + StartTime: Jun 30, 2023 10:47 +0000 + EndTime: Jun 30, 2023 17:00 +0000 + CreatedTime: Jun 30, 2023 10:47 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1531220720 + Description: network outage + Severity: Outage + StartTime: Jun 30, 2023 10:47 +0000 + EndTime: Jun 30, 2023 17:00 +0000 + CreatedTime: Jun 30, 2023 10:47 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1531220721 + Description: network outage + Severity: Outage + StartTime: Jun 30, 2023 10:47 +0000 + EndTime: Jun 30, 2023 17:00 +0000 + CreatedTime: Jun 30, 2023 10:47 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1531220722 + Description: network outage + Severity: Outage + StartTime: Jun 30, 2023 10:47 +0000 + EndTime: Jun 30, 2023 17:00 +0000 + CreatedTime: Jun 30, 2023 10:47 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1531220723 + Description: network outage + Severity: Outage + StartTime: Jun 30, 2023 10:47 +0000 + EndTime: Jun 30, 2023 17:00 +0000 + CreatedTime: Jun 30, 2023 10:47 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1531220724 + Description: network outage + Severity: Outage + StartTime: Jun 30, 2023 10:47 +0000 + EndTime: Jun 30, 2023 17:00 +0000 + CreatedTime: Jun 30, 2023 10:47 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566003784 + Description: network outage + Severity: Outage + StartTime: Aug 09, 2023 15:30 +0000 + EndTime: Aug 09, 2023 21:00 +0000 + CreatedTime: Aug 09, 2023 16:59 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566003785 + Description: network outage + Severity: Outage + StartTime: Aug 09, 2023 15:30 +0000 + EndTime: Aug 09, 2023 21:00 +0000 + CreatedTime: Aug 09, 2023 16:59 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566003786 + Description: network outage + Severity: Outage + StartTime: Aug 09, 2023 15:30 +0000 + EndTime: Aug 09, 2023 21:00 +0000 + CreatedTime: Aug 09, 2023 16:59 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566003787 + Description: network outage + Severity: Outage + StartTime: Aug 09, 2023 15:30 +0000 + EndTime: Aug 09, 2023 21:00 +0000 + CreatedTime: Aug 09, 2023 16:59 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566003788 + Description: network outage + Severity: Outage + StartTime: Aug 09, 2023 15:30 +0000 + EndTime: Aug 09, 2023 21:00 +0000 + CreatedTime: Aug 09, 2023 16:59 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566003789 + Description: network outage + Severity: Outage + StartTime: Aug 09, 2023 15:30 +0000 + EndTime: Aug 09, 2023 21:00 +0000 + CreatedTime: Aug 09, 2023 16:59 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566179622 + Description: network outage - fiber cut + Severity: Outage + StartTime: Aug 09, 2023 21:00 +0000 + EndTime: Aug 10, 2023 01:00 +0000 + CreatedTime: Aug 09, 2023 21:52 +0000 + ResourceName: BR-Sprace BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566179623 + Description: network outage - fiber cut + Severity: Outage + StartTime: Aug 09, 2023 21:00 +0000 + EndTime: Aug 10, 2023 01:00 +0000 + CreatedTime: Aug 09, 2023 21:52 +0000 + ResourceName: BR-Sprace LT + Services: + - net.perfSONAR.Latency +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566179624 + Description: network outage - fiber cut + Severity: Outage + StartTime: Aug 09, 2023 21:00 +0000 + EndTime: Aug 10, 2023 01:00 +0000 + CreatedTime: Aug 09, 2023 21:52 +0000 + ResourceName: SPRACE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566179625 + Description: network outage - fiber cut + Severity: Outage + StartTime: Aug 09, 2023 21:00 +0000 + EndTime: Aug 10, 2023 01:00 +0000 + CreatedTime: Aug 09, 2023 21:52 +0000 + ResourceName: SPRACE-SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566179626 + Description: network outage - fiber cut + Severity: Outage + StartTime: Aug 09, 2023 21:00 +0000 + EndTime: Aug 10, 2023 01:00 +0000 + CreatedTime: Aug 09, 2023 21:52 +0000 + ResourceName: T2_BR_SPRACE-squid1 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1566179627 + Description: network outage - fiber cut + Severity: Outage + StartTime: Aug 09, 2023 21:00 +0000 + EndTime: Aug 10, 2023 01:00 +0000 + CreatedTime: Aug 09, 2023 21:52 +0000 + ResourceName: T2_BR_SPRACE-squid2 + Services: + - Squid +# --------------------------------------------------------- diff --git a/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ.yaml b/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ.yaml index c1ba341a7..155c11f00 100644 --- a/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ.yaml +++ b/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ.yaml @@ -61,7 +61,7 @@ Resources: Name: Douglas Milanez Marques Description: CE Gatekeeper of T2_BR_UERJ. FQDN: osgce.hepgrid.uerj.br - ID: 210 + ID: 1374 Services: CE: Description: Compute Element @@ -137,7 +137,7 @@ Resources: Description: Hepgrid Squid service UERJ_SQUID_2: FQDN: squid2.hepgrid.uerj.br - ID: 996 + ID: 1379 Active: True ContactLists: Administrative Contact: diff --git a/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ_downtime.yaml b/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ_downtime.yaml index 4877f825f..8d238a8ec 100644 --- a/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ_downtime.yaml +++ b/topology/Universidade do Estado do Rio de Janeiro/T2_BR_UERJ/UERJ_downtime.yaml @@ -465,4 +465,351 @@ Services: - net.perfSONAR.Bandwidth # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300713585 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:49 +0000 + ResourceName: UERJ_CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300714164 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:50 +0000 + ResourceName: UERJ_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300714243 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:50 +0000 + ResourceName: UERJ_SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300714339 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:50 +0000 + ResourceName: UERJ_SQUID + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300714433 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:50 +0000 + ResourceName: UERJ_SQUID_2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300714519 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:50 +0000 + ResourceName: UERJ_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1300714597 + Description: We'll need to interrupt our network to repair the optical fiber + Severity: Outage + StartTime: Oct 10, 2022 09:00 +0000 + EndTime: Oct 13, 2022 21:00 +0000 + CreatedTime: Oct 06, 2022 15:50 +0000 + ResourceName: UERJ_perfSONAR_LT + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319006408 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:57 +0000 + ResourceName: UERJ_CE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319006949 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:58 +0000 + ResourceName: UERJ_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319007037 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:58 +0000 + ResourceName: UERJ_SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319007125 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:58 +0000 + ResourceName: UERJ_SQUID + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319007192 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:58 +0000 + ResourceName: UERJ_SQUID_2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319007336 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:58 +0000 + ResourceName: UERJ_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1319007402 + Description: We had an unexpected issue in our network. We're investigating. + Severity: Outage + StartTime: Oct 27, 2022 12:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 27, 2022 19:59 +0000 + ResourceName: UERJ_perfSONAR_LT + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267263 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:18 +0000 + ResourceName: UERJ_CE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267414 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:19 +0000 + ResourceName: UERJ_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267564 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:19 +0000 + ResourceName: UERJ_SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267645 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:19 +0000 + ResourceName: UERJ_SQUID + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267720 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:19 +0000 + ResourceName: UERJ_SQUID_2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267827 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:19 +0000 + ResourceName: UERJ_perfSONAR_BW + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1323267894 + Description: 'We still have ongoing network issues. ' + Severity: Outage + StartTime: Oct 31, 2022 12:00 +0000 + EndTime: Nov 07, 2022 22:00 +0000 + CreatedTime: Nov 01, 2022 18:19 +0000 + ResourceName: UERJ_perfSONAR_LT + Services: + - net.perfSONAR.Bandwidth +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542518458 + Description: We will install/replace physical servers, reposition racks, and servers + and swap cables. Everything will be impacted. + Severity: Outage + StartTime: Jul 17, 2023 10:00 +0000 + EndTime: Jul 21, 2023 21:00 +0000 + CreatedTime: Jul 13, 2023 12:37 +0000 + ResourceName: UERJ_CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542518883 + Description: We will install/replace physical servers, reposition racks, and servers + and swap cables. Everything will be impacted. + Severity: Outage + StartTime: Jul 17, 2023 10:00 +0000 + EndTime: Jul 21, 2023 21:00 +0000 + CreatedTime: Jul 13, 2023 12:38 +0000 + ResourceName: UERJ_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542518984 + Description: We will install/replace physical servers, reposition racks, and servers + and swap cables. Everything will be impacted. + Severity: Outage + StartTime: Jul 17, 2023 10:00 +0000 + EndTime: Jul 21, 2023 21:00 +0000 + CreatedTime: Jul 13, 2023 12:38 +0000 + ResourceName: UERJ_SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542519096 + Description: We will install/replace physical servers, reposition racks, and servers + and swap cables. Everything will be impacted. + Severity: Outage + StartTime: Jul 17, 2023 10:00 +0000 + EndTime: Jul 21, 2023 21:00 +0000 + CreatedTime: Jul 13, 2023 12:38 +0000 + ResourceName: UERJ_SQUID + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1542519189 + Description: We will install/replace physical servers, reposition racks, and servers + and swap cables. Everything will be impacted. + Severity: Outage + StartTime: Jul 17, 2023 10:00 +0000 + EndTime: Jul 21, 2023 21:00 +0000 + CreatedTime: Jul 13, 2023 12:38 +0000 + ResourceName: UERJ_SQUID_2 + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1549695465 + Description: We need to perform further network tests before activating back the site + Severity: Outage + StartTime: Jul 21, 2023 20:00 +0000 + EndTime: Jul 25, 2023 21:00 +0000 + CreatedTime: Jul 21, 2023 19:59 +0000 + ResourceName: UERJ_CE + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1549695615 + Description: We need to perform further network tests before activating back the site + Severity: Outage + StartTime: Jul 21, 2023 20:00 +0000 + EndTime: Jul 25, 2023 21:00 +0000 + CreatedTime: Jul 21, 2023 19:59 +0000 + ResourceName: UERJ_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1549695696 + Description: We need to perform further network tests before activating back the site + Severity: Outage + StartTime: Jul 21, 2023 20:00 +0000 + EndTime: Jul 25, 2023 21:00 +0000 + CreatedTime: Jul 21, 2023 19:59 +0000 + ResourceName: UERJ_SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1549695779 + Description: We need to perform further network tests before activating back the site + Severity: Outage + StartTime: Jul 21, 2023 20:00 +0000 + EndTime: Jul 25, 2023 21:00 +0000 + CreatedTime: Jul 21, 2023 19:59 +0000 + ResourceName: UERJ_SQUID + Services: + - Squid +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1549695876 + Description: We need to perform further network tests before activating back the site + Severity: Outage + StartTime: Jul 21, 2023 20:00 +0000 + EndTime: Jul 25, 2023 21:00 +0000 + CreatedTime: Jul 21, 2023 19:59 +0000 + ResourceName: UERJ_SQUID_2 + Services: + - Squid +# --------------------------------------------------------- + diff --git a/topology/Universite catholique de Louvain/UCL-INGRID/UCL-INGRID.yaml b/topology/Universite catholique de Louvain/UCL-INGRID/UCL-INGRID.yaml index df5a7abc1..704214e56 100644 --- a/topology/Universite catholique de Louvain/UCL-INGRID/UCL-INGRID.yaml +++ b/topology/Universite catholique de Louvain/UCL-INGRID/UCL-INGRID.yaml @@ -1,11 +1,11 @@ Production: true SupportCenter: Self Supported -GroupDescription: StashCache Origin in Louvain +GroupDescription: OSDF Origins in Louvain GroupID: 1097 Resources: UCL-Virgo-StashCache-Origin: Active: true - Description: Virgo StashCache Origin + Description: Virgo OSDF Origin ID: 1108 ContactLists: Administrative Contact: @@ -20,9 +20,32 @@ Resources: Name: Pavel Demin ID: a1697df7d81a4fe12d6f156922ef6c7b82bd3479 FQDN: ingrid-se09.cism.ucl.ac.be - DN: /DC=org/DC=terena/DC=tcs/C=BE/ST=Brabant wallon/L=Louvain-la-Neuve/O=Universite catholique de Louvain/CN=ingrid-se09.cism.ucl.ac.be + DN: /DC=org/DC=terena/DC=tcs/C=BE/ST=Brabant wallon/O=Universite catholique de Louvain/CN=ingrid-se09.cism.ucl.ac.be Services: XRootD origin server: - Description: Virgo StashCache Origin Server + Description: Virgo OSDF Origin Server + AllowedVOs: + - ANY + UCLouvain-ET-OSDF-Origin: + Active: true + Description: ET OSDF Origin + ID: 1359 + ContactLists: + Administrative Contact: + Primary: + Name: Andres Tanasijczuk + ID: 7142b387956966f21dfcedf7fa4eef637c15837c + Secondary: + Name: Pavel Demin + ID: a1697df7d81a4fe12d6f156922ef6c7b82bd3479 + Security Contact: + Primary: + Name: Pavel Demin + ID: a1697df7d81a4fe12d6f156922ef6c7b82bd3479 + FQDN: et-origin.cism.ucl.ac.be + DN: /DC=org/DC=terena/DC=tcs/C=BE/ST=Brabant wallon/O=Universite catholique de Louvain/CN=et-origin.cism.ucl.ac.be + Services: + XRootD origin server: + Description: ET OSDF Origin Server AllowedVOs: - ANY diff --git a/topology/University of Alabama/University of Alabama/Alabama-CHPC.yaml b/topology/University of Alabama/University of Alabama/Alabama-CHPC.yaml new file mode 100644 index 000000000..f7b402bba --- /dev/null +++ b/topology/University of Alabama/University of Alabama/Alabama-CHPC.yaml @@ -0,0 +1,138 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: University of Alabama CHPC + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1343 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + Alabama-CHPC-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE serving UA-CHPC + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1416 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: ua-hpc-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + Tags: + - CC* + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # ... + diff --git a/topology/University of Alabama/University of Alabama/UA-HPC.yaml b/topology/University of Alabama/University of Alabama/UA-HPC.yaml index 0692c3e7a..409a6376c 100644 --- a/topology/University of Alabama/University of Alabama/UA-HPC.yaml +++ b/topology/University of Alabama/University of Alabama/UA-HPC.yaml @@ -20,7 +20,7 @@ Resources: UA-HPC-CE1: # Active is true if the resource is accepting requests, and false otherwise. # When first registering a resource, set this to false. Set it to true when it's ready for production. - Active: true + Active: false # Description is a long description of the resource; may be multiple lines Description: Hosted CE serving UA-HPC # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` @@ -75,7 +75,7 @@ Resources: # ID: # FQDN is the fully qualified domain name of the host running this resource - FQDN: ua-hpc-ce1.svc.opensciencegrid.org + FQDN: ua-hpc-ce1-inactive.svc.opensciencegrid.org ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed # FQDNAliases: # - diff --git a/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure.yaml b/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure.yaml index b2746660d..32df46bf3 100644 --- a/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure.yaml +++ b/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure.yaml @@ -10,17 +10,17 @@ Resources: ContactLists: Administrative Contact: Primary: - Name: Diego Davila - ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Name: Fabio Andrijauskas + ID: OSG1000162 # Security Contact is one to three people to contact regarding security issues Security Contact: Primary: - Name: Diego Davila - ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Name: Fabio Andrijauskas + ID: OSG1000162 FQDN: fiona-r-uva.vlan7.uvalight.net - DN: /DC=org/DC=terena/DC=tcs/C=NL/L=Amsterdam/O=Universiteit van Amsterdam/CN=fiona-r-uva.vlan7.uvalight.net + DN: /DC=org/DC=terena/DC=tcs/C=NL/ST=Noord-Holland/O=Universiteit van Amsterdam/CN=fiona-r-uva.vlan7.uvalight.net Services: XRootD cache server: Description: University of Amsterdam Stashcache Caching Server AllowedVOs: - - ANY \ No newline at end of file + - ANY diff --git a/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure_downtime.yaml b/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure_downtime.yaml new file mode 100644 index 000000000..c89e31467 --- /dev/null +++ b/topology/University of Amsterdam/AmsterdamPRP/AmsterdamPRPCachingInfrastructure_downtime.yaml @@ -0,0 +1,11 @@ +- Class: SCHEDULED + ID: 1395825454 + Description: OS update + Severity: Outage + StartTime: Jan 25, 2023 08:00 +0000 + EndTime: Feb 5, 2023 19:00 +0000 + CreatedTime: Jan 24, 2023 17:49 +0000 + ResourceName: Stashcache-UofA + Services: + - XRootD cache server +# ------------------------------------------------------- diff --git a/topology/University of Arkansas at Little Rock/FACILITY.yaml b/topology/University of Arkansas at Little Rock/FACILITY.yaml new file mode 100644 index 000000000..d83681850 --- /dev/null +++ b/topology/University of Arkansas at Little Rock/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10204 diff --git a/topology/University of Arkansas at Little Rock/UA Little Rock ITS/SITE.yaml b/topology/University of Arkansas at Little Rock/UA Little Rock ITS/SITE.yaml new file mode 100644 index 000000000..9f5a0bf73 --- /dev/null +++ b/topology/University of Arkansas at Little Rock/UA Little Rock ITS/SITE.yaml @@ -0,0 +1,11 @@ +LongName: University of Arkansas at Little Rock +Description: UA Little Rock IT Services Cluster +ID: 10347 +AddressLine1: 2801 South University Ave +AddressLine2: Building Trojan B Room 205 +City: Little Rock +Country: United States +State: Arkansas +Zipcode: "72204" +Latitude: 34.72265 +Longitude: -92.33989 diff --git a/topology/University of Arkansas at Little Rock/UA Little Rock ITS/UA-LR-ITS.yaml b/topology/University of Arkansas at Little Rock/UA Little Rock ITS/UA-LR-ITS.yaml new file mode 100644 index 000000000..9d315a7d0 --- /dev/null +++ b/topology/University of Arkansas at Little Rock/UA Little Rock ITS/UA-LR-ITS.yaml @@ -0,0 +1,46 @@ +Production: true +SupportCenter: Self Supported +GroupDescription: Compute resources from UALR IT Services +GroupID: 1332 +Resources: + UA-LR-ITS-EP: + Active: true + Description: Backfill containers running at University of Arkansas at Little Rock + ID: 1390 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000251 + Name: Timothy Stoddard + Security Contact: + Primary: + ID: OSG1000251 + Name: Timothy Stoddard + FQDN: ospool-backfill.ualr.edu + Services: + Execution Endpoint: + Description: UALR backfill containers + + UA-LR-ITS-squid1: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000251 + Name: Timothy Stoddard + Secondary: + ID: OSG1000251 + Name: Timothy Stoddard + Security Contact: + Primary: + ID: OSG1000251 + Name: Timothy Stoddard + Secondary: + ID: OSG1000251 + Name: Timothy Stoddard + Description: The first squid server for UA Little Rock. + FQDN: frontier-cache.res.ualr.edu + ID: 1442 + Services: + Squid: + Description: Generic squid service diff --git a/topology/University of California San Diego/SDSC OSG/DataInfrastructure.yaml b/topology/University of California San Diego/SDSC OSG/DataInfrastructure.yaml index 2221b39d8..549c3c365 100644 --- a/topology/University of California San Diego/SDSC OSG/DataInfrastructure.yaml +++ b/topology/University of California San Diego/SDSC OSG/DataInfrastructure.yaml @@ -49,12 +49,12 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 Security Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 FQDN: osdftest.t2.ucsd.edu ID: 1307 diff --git a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-Expanse.yaml b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-Expanse.yaml index 8261b0ac3..735b02ad6 100644 --- a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-Expanse.yaml +++ b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-Expanse.yaml @@ -153,9 +153,6 @@ Resources: Tertiary: ID: 66ee5cfb622a7343dac85dee42815d1f4fbc2d85 Name: Brian Bockelman - Tertiary 2: - ID: 606b797dcc03cad7135b7cc61b78fbc15eea7ec8 - Name: Carl Edquist Security Contact: Primary: ID: 46a55ac4815b2b8c00ff283549f413113b45d628 diff --git a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NRP.yaml b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NRP.yaml new file mode 100644 index 000000000..4e7c7115c --- /dev/null +++ b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NRP.yaml @@ -0,0 +1,52 @@ +Production: true +SupportCenter: Community Support Center +GroupDescription: Compute infrastructure at SDSC for NRP +GroupID: 1335 + +Resources: + SDSC_NRP_OSDF_ORIGIN: + Active: true + Description: SDSC NRP origin + ID: 1354 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Secondary: + ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Name: Diego Davila + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=sdsc-origin.nationalresearchplatform.org + FQDN: sdsc-origin.nationalresearchplatform.org + Services: + XRootD origin server: + Description: SDSC NRP OSDF Origin + AllowedVOs: + - ANY + SDSC_NRP_OSDF_CACHE: + Active: true + Description: SDSC NRP OSDF Cache + ID: 1355 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Secondary: + Name: Diego Davila + ID: bc36e7fe84fffcb5cf195fe09cc42336f5cd5d1f + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=sdsc-cache.nationalresearchplatform.org + FQDN: sdsc-cache.nationalresearchplatform.org + Services: + XRootD cache server: + Description: SDSC NRP OSDF Cache + AllowedVOs: + - ANY diff --git a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NRP_downtime.yaml b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NRP_downtime.yaml new file mode 100644 index 000000000..b0a924907 --- /dev/null +++ b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NRP_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1486660995 + Description: 'network maintenance ' + Severity: Outage + StartTime: May 09, 2023 16:00 +0000 + EndTime: May 11, 2023 16:30 +0000 + CreatedTime: May 09, 2023 21:01 +0000 + ResourceName: SDSC_NRP_OSDF_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- diff --git a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NSG.yaml b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NSG.yaml index ee87b1c4b..f19d1d4f7 100644 --- a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NSG.yaml +++ b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-NSG.yaml @@ -21,7 +21,12 @@ Resources: FQDN: nsgosg.sdsc.edu Services: Submit Node: - Description: OS Pool access point + Description: OS Pool access point for NSG + XRootD origin server: + Description: OSDF origin server for NSG + AllowedVOs: + - ANY + DN: /DC=org/DC=incommon/C=US/ST=California/O="University of California, San Diego"/CN=nsgosg.sdsc.edu Tags: - OSPool diff --git a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-RDS.yaml b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-RDS.yaml index 9886d1257..e2f04b254 100644 --- a/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-RDS.yaml +++ b/topology/University of California San Diego/San Diego Supercomputer Center/SDSC-RDS.yaml @@ -93,6 +93,7 @@ Resources: Description: OSDF origin server AllowedVOs: - XENON + - NSG ### Details (optional) # Details: # # hidden @@ -117,8 +118,8 @@ Resources: ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. ### If part of the resource is not owned by the VO, do not list it. ### The total percentage cannot exceed 100. - VOOwnership: - XENON: 100 + #VOOwnership: + #XENON: 100 ### WLCGInformation (optional) is only for resources that are part of the WLCG diff --git a/topology/University of California San Diego/UCSD CMS Tier2/UCSDT2_downtime.yaml b/topology/University of California San Diego/UCSD CMS Tier2/UCSDT2_downtime.yaml index 7cd3eaea6..1bafaeefd 100644 --- a/topology/University of California San Diego/UCSD CMS Tier2/UCSDT2_downtime.yaml +++ b/topology/University of California San Diego/UCSD CMS Tier2/UCSDT2_downtime.yaml @@ -1466,3 +1466,124 @@ Services: - GridFtp # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1305197528 + Description: Intermittant campus network issues + Severity: Intermittent Outage + StartTime: Oct 11, 2022 20:00 +0000 + EndTime: Oct 12, 2022 21:00 +0000 + CreatedTime: Oct 11, 2022 20:22 +0000 + ResourceName: UCSDT2-A + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1305197529 + Description: Intermittant campus network issues + Severity: Intermittent Outage + StartTime: Oct 11, 2022 20:00 +0000 + EndTime: Oct 12, 2022 21:00 +0000 + CreatedTime: Oct 11, 2022 20:22 +0000 + ResourceName: UCSDT2-B + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1305197530 + Description: Intermittant campus network issues + Severity: Intermittent Outage + StartTime: Oct 11, 2022 20:00 +0000 + EndTime: Oct 12, 2022 21:00 +0000 + CreatedTime: Oct 11, 2022 20:22 +0000 + ResourceName: UCSDT2-C + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1305197531 + Description: Intermittant campus network issues + Severity: Intermittent Outage + StartTime: Oct 11, 2022 20:00 +0000 + EndTime: Oct 12, 2022 21:00 +0000 + CreatedTime: Oct 11, 2022 20:22 +0000 + ResourceName: UCSDT2-D + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1305197532 + Description: Intermittant campus network issues + Severity: Intermittent Outage + StartTime: Oct 11, 2022 20:00 +0000 + EndTime: Oct 12, 2022 21:00 +0000 + CreatedTime: Oct 11, 2022 20:22 +0000 + ResourceName: UCSDT2-SE1 + Services: + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1349304538 + Description: Downtime for cooling system maintenance + Severity: Outage + StartTime: Dec 05, 2022 16:00 +0000 + EndTime: Dec 05, 2022 18:00 +0000 + CreatedTime: Dec 01, 2022 21:34 +0000 + ResourceName: UCSDT2-A + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1349304539 + Description: Downtime for cooling system maintenance + Severity: Outage + StartTime: Dec 05, 2022 16:00 +0000 + EndTime: Dec 05, 2022 18:00 +0000 + CreatedTime: Dec 01, 2022 21:34 +0000 + ResourceName: UCSDT2-B + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1349304540 + Description: Downtime for cooling system maintenance + Severity: Outage + StartTime: Dec 05, 2022 16:00 +0000 + EndTime: Dec 05, 2022 18:00 +0000 + CreatedTime: Dec 01, 2022 21:34 +0000 + ResourceName: UCSDT2-C + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1349304541 + Description: Downtime for cooling system maintenance + Severity: Outage + StartTime: Dec 05, 2022 16:00 +0000 + EndTime: Dec 05, 2022 18:00 +0000 + CreatedTime: Dec 01, 2022 21:34 +0000 + ResourceName: UCSDT2-D + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1349304542 + Description: Downtime for cooling system maintenance + Severity: Outage + StartTime: Dec 05, 2022 16:00 +0000 + EndTime: Dec 05, 2022 18:00 +0000 + CreatedTime: Dec 01, 2022 21:34 +0000 + ResourceName: UCSDT2-SE1 + Services: + - GridFtp +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1522878724 + Description: Disk failure + Severity: Outage + StartTime: Jun 20, 2023 19:00 +0000 + EndTime: Jun 27, 2023 00:00 +0000 + CreatedTime: Jun 20, 2023 19:04 +0000 + ResourceName: UCSDT2-C + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/University of California San Diego/UCSD OSG/StashCaches.yaml b/topology/University of California San Diego/UCSD OSG/StashCaches.yaml index 2307d9038..4fa1911dd 100644 --- a/topology/University of California San Diego/UCSD OSG/StashCaches.yaml +++ b/topology/University of California San Diego/UCSD OSG/StashCaches.yaml @@ -11,7 +11,7 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 Secondary: Name: Terrence Martin ID: 876425696868c8a32fa1b8ee1db792b5c76a9f37 @@ -21,9 +21,9 @@ Resources: Name: Terrence Martin ID: 876425696868c8a32fa1b8ee1db792b5c76a9f37 FQDN: stashcache.t2.ucsd.edu - DN: /DC=org/DC=incommon/C=US/postalCode=92093/ST=CA/L=La Jolla/street=9500 Gilman Drive/O=University of California, San Diego/OU=UCSD/CN=stashcache.t2.ucsd.edu + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=stashcache.t2.ucsd.edu Services: XRootD cache server: Description: UCSD Stashcache Caching Server AllowedVOs: - - ANY \ No newline at end of file + - ANY diff --git a/topology/University of California San Diego/UCSD OSG/StashCaches_downtime.yaml b/topology/University of California San Diego/UCSD OSG/StashCaches_downtime.yaml new file mode 100644 index 000000000..7401cefde --- /dev/null +++ b/topology/University of California San Diego/UCSD OSG/StashCaches_downtime.yaml @@ -0,0 +1,9 @@ +- Class: SCHEDULED + Description: OS reinstall + EndTime: Nov 17, 2016 18:00 +0000 + ID: 997651580 + ResourceName: Stashcache-UCSD + Services: + - XRootD cache server + Severity: Outage + StartTime: Nov 16, 2016 18:00 +0000 diff --git a/topology/University of Campinas/CCJDR/feynman-PBS.yaml b/topology/University of Campinas/CCJDR/feynman-PBS.yaml index bec5fbefd..25033835a 100644 --- a/topology/University of Campinas/CCJDR/feynman-PBS.yaml +++ b/topology/University of Campinas/CCJDR/feynman-PBS.yaml @@ -9,7 +9,7 @@ GroupDescription: This is a cluster of HPC used for the Dune # If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` # Otherwise, leave it blank and we will fill in the appropriate value for you. -GroupID: 1108 +GroupID: 1320 # Resources contains one or more resources in this # ResourceGroup. A resource provides one or more services @@ -35,7 +35,7 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 # Secondary: # Name: # ID: diff --git a/topology/University of Chicago/Chameleon/chameleon-uc-dev.yaml b/topology/University of Chicago/Chameleon/chameleon-uc-dev.yaml index bcab867f9..998486527 100644 --- a/topology/University of Chicago/Chameleon/chameleon-uc-dev.yaml +++ b/topology/University of Chicago/Chameleon/chameleon-uc-dev.yaml @@ -1,5 +1,5 @@ # Production is true if the resource is for production and not testing use -Production: False +Production: True # SupportCenter is one of the support centers in topology/support-centers.yaml SupportCenter: Self Supported diff --git a/topology/University of Chicago/MWT2 ATLAS UC/MWT2.yaml b/topology/University of Chicago/MWT2 ATLAS UC/MWT2.yaml index 5fb08311a..10f079c83 100644 --- a/topology/University of Chicago/MWT2 ATLAS UC/MWT2.yaml +++ b/topology/University of Chicago/MWT2 ATLAS UC/MWT2.yaml @@ -82,7 +82,8 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Description: MWT2-hosted resources for Connect-related submitters. Supporting + Description: + MWT2-hosted resources for Connect-related submitters. Supporting OSG, XENON1T, OSG, ATLAS, CMS, etc via direct flocking. FQDN: condor.grid.uchicago.edu ID: 846 @@ -298,7 +299,7 @@ Resources: StorageCapacityMin: 0 TapeCapacity: 0 MWT2_CE_UIUC: - Active: false + Active: true ContactLists: Administrative Contact: Primary: @@ -326,9 +327,9 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Description: MWT2 Gatekeeper located at University of Illinois @ Urbana-Champaign, - IL - FQDN: mwt2-gk.campuscluster.illinois.edu + Description: + MWT2 Gatekeeper located at University of Illinois @ Urbana-Champaign, IL + FQDN: uiuc-gk.mwt2.org ID: 490 Services: CE: @@ -349,44 +350,7 @@ Resources: StorageCapacityMax: 0 StorageCapacityMin: 0 TapeCapacity: 0 - MWT2_CVMFS_IU: - Active: true - ContactLists: - Administrative Contact: - Primary: - ID: a418fbc5dd33637bba264c01d84d52dd317f2813 - Name: Judith Stephen - Secondary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - Tertiary: - ID: 3c60d9a835029389712c5f6cc30720bc5562519d - Name: David Jordan - Tertiary 2: - ID: OSG1000221 - Name: Farnaz Golnaraghi - Security Contact: - Primary: - ID: a418fbc5dd33637bba264c01d84d52dd317f2813 - Name: Judith Stephen - Secondary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - Tertiary: - ID: 3c60d9a835029389712c5f6cc30720bc5562519d - Name: David Jordan - Tertiary 2: - ID: OSG1000221 - Name: Farnaz Golnaraghi - Description: MWT2 CVMFS Squid located at Indiana University @ Indianapolis, IN - FQDN: iut2-cvmfs.mwt2.org - ID: 912 - Services: - Squid: - Description: Generic squid service - VOOwnership: - ATLAS: 100 - MWT2_CVMFS_UC: + MWT2_CE_UIUC2: Active: true ContactLists: Administrative Contact: @@ -415,15 +379,29 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Description: MWT2 CVMFS Squid located at the University of Chicago @ Chicago, - IL - FQDN: uct2-cvmfs.mwt2.org - ID: 913 + Description: + MWT2 Gatekeeper located at University of Illinois @ Urbana-Champaign, IL + FQDN: uiuc-gk02.mwt2.org + ID: 1432 Services: - Squid: - Description: Generic squid service + CE: + Description: Compute Element + Details: + hidden: false VOOwnership: ATLAS: 100 + WLCGInformation: + APELNormalFactor: 14.11 + AccountingName: US-MWT2 + HEPSPEC: 589592 + InteropAccounting: true + InteropBDII: true + InteropMonitoring: true + KSI2KMax: 147398 + KSI2KMin: 147398 + StorageCapacityMax: 0 + StorageCapacityMin: 0 + TapeCapacity: 0 MWT2_CVMFS_UIUC: Active: true ContactLists: @@ -453,8 +431,8 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Description: MWT2 CVMFS Squid located at University of Illinois @ Urbana-Champaign, - IL + Description: + MWT2 CVMFS Squid located at University of Illinois @ Urbana-Champaign, IL FQDN: mwt2-cvmfs.campuscluster.illinois.edu ID: 914 Services: @@ -590,7 +568,7 @@ Resources: Name: Farnaz Golnaraghi Description: MWT2 SLATE located at Indiana University @ Indianapolis, IN FQDN: iut2-slate.mwt2.org - ID: 1066 + ID: 1066 Services: Squid: Description: Generic squid service @@ -615,23 +593,6 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Miscellaneous Contact: - Primary: - ID: 3b1876c30549a51501329cbb9678289fc786ac29 - Name: Frederick Luehring - Resource Report Contact: - Primary: - ID: a418fbc5dd33637bba264c01d84d52dd317f2813 - Name: Judith Stephen - Secondary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - Tertiary: - ID: 3c60d9a835029389712c5f6cc30720bc5562519d - Name: David Jordan - Tertiary 2: - ID: OSG1000221 - Name: Farnaz Golnaraghi Security Contact: Primary: ID: a418fbc5dd33637bba264c01d84d52dd317f2813 @@ -655,7 +616,7 @@ Resources: uri_override: iut2-slate01.mwt2.org:32200 Monitored: true VOOwnership: - ATLAS: 100 + ATLAS: 100 MWT2_SLATE_UIUC: Active: true ContactLists: @@ -726,13 +687,13 @@ Resources: ID: OSG1000221 Name: Farnaz Golnaraghi Description: MWT2 SLATE Varnish cache located at University of Chicago, IL - FQDN: v4a.atlas-ml.org + FQDN: v4a.mwt2.org ID: 1320 Services: Squid: Description: Varnish based squid service for Frontier Details: - uri_override: v4a.atlas-ml.org:6081 + uri_override: v4a.mwt2.org:6081 Monitored: true MWT2_VARNISH_CVMFS: Active: true @@ -764,13 +725,13 @@ Resources: ID: OSG1000221 Name: Farnaz Golnaraghi Description: MWT2 SLATE Varnish cache located at University of Chicago, IL - FQDN: v4cvmfs.atlas-ml.org + FQDN: v4cvmfs.mwt2.org ID: 1321 Services: Squid: Description: Varnish based squid service for CVMFS Details: - uri_override: v4cvmfs.atlas-ml.org:6081 + uri_override: v4cvmfs.mwt2.org:6081 Monitored: true VOOwnership: ATLAS: 100 @@ -806,7 +767,7 @@ Resources: Description: MWT2 dCache/SRM frontend FQDN: uct2-dcache-head.mwt2.org FQDNAliases: - - uct2-dc1.uchicago.edu + - uct2-dc1.uchicago.edu ID: 1182 Services: SRMv2: @@ -863,7 +824,7 @@ Resources: GridFtp: Description: gridftp Storage Element Details: - hidden: false + hidden: false VOOwnership: ATLAS: 100 WLCGInformation: @@ -1925,7 +1886,8 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Description: MWT2 perfSONAR-PS Bandwidth instance at the University of Illinois + Description: + MWT2 perfSONAR-PS Bandwidth instance at the University of Illinois at Urbana-Champaign FQDN: mwt2-ps02.campuscluster.illinois.edu ID: 582 @@ -2004,7 +1966,8 @@ Resources: Tertiary 2: ID: OSG1000221 Name: Farnaz Golnaraghi - Description: MWT2 perfSONAR-PS Latency instance at the University of Illinois + Description: + MWT2 perfSONAR-PS Latency instance at the University of Illinois at Urbana-Champaign FQDN: mwt2-ps01.campuscluster.illinois.edu ID: 518 diff --git a/topology/University of Chicago/MWT2 ATLAS UC/MWT2_downtime.yaml b/topology/University of Chicago/MWT2 ATLAS UC/MWT2_downtime.yaml index 397d01184..6a602a843 100644 --- a/topology/University of Chicago/MWT2 ATLAS UC/MWT2_downtime.yaml +++ b/topology/University of Chicago/MWT2 ATLAS UC/MWT2_downtime.yaml @@ -1442,3 +1442,69 @@ Services: - CE # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1348259145 + Description: Switch failure + Severity: Outage + StartTime: Nov 29, 2022 22:00 +0000 + EndTime: Dec 05, 2022 14:00 +0000 + CreatedTime: Nov 30, 2022 16:31 +0000 + ResourceName: MWT2_CE_IU + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1348262765 + Description: Switch failure + Severity: Outage + StartTime: Nov 29, 2022 22:00 +0000 + EndTime: Dec 05, 2022 14:00 +0000 + CreatedTime: Nov 30, 2022 16:37 +0000 + ResourceName: MWT2_CE_IU2 + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1348264449 + Description: Switch failure + Severity: Outage + StartTime: Nov 29, 2022 22:00 +0000 + EndTime: Dec 05, 2022 14:00 +0000 + CreatedTime: Nov 30, 2022 16:40 +0000 + ResourceName: MWT2_SLATE_IU + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1497861403 + Description: dCache downtime + Severity: Outage + StartTime: May 30, 2023 14:00 +0000 + EndTime: May 30, 2023 20:25 +0000 + CreatedTime: May 22, 2023 20:09 +0000 + ResourceName: MWT2_UC_SE + Services: + - SRMv2 +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1497861773 + Description: dCache downtime + Severity: Outage + StartTime: May 30, 2023 14:00 +0000 + EndTime: May 30, 2023 20:25 +0000 + CreatedTime: May 22, 2023 20:09 +0000 + ResourceName: MWT2_UC_WebDAV + Services: + - WebDAV +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1497861882 + Description: dCache downtime + Severity: Outage + StartTime: May 30, 2023 14:00 +0000 + EndTime: May 30, 2023 20:25 +0000 + CreatedTime: May 22, 2023 20:09 +0000 + ResourceName: MWT2_UC_XRootD_door + Services: + - XRootD component +# --------------------------------------------------------- diff --git a/topology/University of Chicago/UChicago/UChicagoCachingInfrastructure.yaml b/topology/University of Chicago/UChicago/UChicagoCachingInfrastructure.yaml index a38e244c9..d305f7f0e 100644 --- a/topology/University of Chicago/UChicago/UChicagoCachingInfrastructure.yaml +++ b/topology/University of Chicago/UChicago/UChicagoCachingInfrastructure.yaml @@ -21,56 +21,3 @@ Resources: Description: OSG Connect Origin Server AllowedVOs: - OSG - UCHICAGO_STASHCACHE_CACHE: - Active: false - Description: UChicago StashCache XRootD cache server - ID: 989 - ContactLists: - Administrative Contact: - Primary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - Secondary: - ID: a418fbc5dd33637bba264c01d84d52dd317f2813 - Name: Judith Stephen - Tertiary: - ID: 876425696868c8a32fa1b8ee1db792b5c76a9f37 - Name: Terrence Martin - Security Contact: - Secondary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - FQDN: stashcache.grid.uchicago.edu - DN: /DC=org/DC=incommon/C=US/ST=IL/L=Chicago/O=University of Chicago/OU=IT Services - Self Enrollment/CN=stashcache.grid.uchicago.edu - Services: - XRootD cache server: - Description: StashCache cache server - AllowedVOs: - - ANY - UCHICAGO_TEST_STASHCACHE_CACHE: - FQDN: stashcache.uchicago.slateci.net - DN: /DC=org/DC=incommon/C=US/ST=IL/L=Chicago/O=University of Chicago/OU=IT Services - Self Enrollment/CN=stashcache.uchicago.slateci.net - Services: - Active: true - ID: 999 - ContactLists: - Administrative Contact: - Primary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - Secondary: - ID: 2d78d115b8b035ba841646faceb9ad0c3413f605 - Name: Christopher Weaver - Tertiary: - ID: 7f81bd8445354d9d8929ebdddb39fae976e2b338 - Name: Pascal Paschos - Security Contact: - Secondary: - ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 - Name: Lincoln Bryant - Services: - XRootD cache server: - Description: StashCache cache server - AllowedVOs: - - ANY_PUBLIC - - LIGO diff --git a/topology/University of Chicago/UChicago/UChicago_OSGConnect.yaml b/topology/University of Chicago/UChicago/UChicago_OSGConnect.yaml index 96165028c..90fa9d097 100644 --- a/topology/University of Chicago/UChicago/UChicago_OSGConnect.yaml +++ b/topology/University of Chicago/UChicago/UChicago_OSGConnect.yaml @@ -9,7 +9,7 @@ Resources: UChicago_OSGConnect_login04: Active: true Description: The login04.osgconnect.net login node for the OSG Open Pool - ID: 1173 + ID: 1400 ContactLists: Administrative Contact: Primary: @@ -61,6 +61,178 @@ Resources: Tags: - OSPool + UChicago_OSGConnect_ap20: + Active: true + Description: The ap20.uc.osg-htc.org login node for the OSG Open Pool + ID: 1437 + ContactLists: + Administrative Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + + Security Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + FQDN: ap20.uc.osg-htc.org + Services: + Submit Node: + Description: OS Pool access point + XRootD origin server: + Description: OSG Connect Origin Server + Tags: + - OSPool + AllowedVOs: + - OSG + + UChicago_OSGConnect_ap21: + Active: true + Description: The ap21.uc.osg-htc.org login node for the OSG Open Pool + ID: 1438 + ContactLists: + Administrative Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + + Security Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + FQDN: ap21.uc.osg-htc.org + Services: + Submit Node: + Description: OS Pool access point + XRootD origin server: + Description: OSG Connect Origin Server + Tags: + - OSPool + AllowedVOs: + - OSG + + UChicago_OSGConnect_ap22: + Active: true + Description: The ap22.uc.osg-htc.org login node for the OSG Open Pool + ID: 1439 + ContactLists: + Administrative Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + + Security Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + FQDN: ap22.uc.osg-htc.org + Services: + Submit Node: + Description: OS Pool access point + XRootD origin server: + Description: OSG Connect Origin Server + Tags: + - OSPool + AllowedVOs: + - OSG + + UChicago_OSGConnect_ap23: + Active: true + Description: The ap23.uc.osg-htc.org login node for the OSG Open Pool + ID: 1440 + ContactLists: + Administrative Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + + Security Contact: + Primary: + Name: Judith Stephen + ID: a418fbc5dd33637bba264c01d84d52dd317f2813 + Secondary: + Name: Farnaz Golnaraghi + ID: OSG1000221 + Tertiary: + Name: David Jordan + ID: 3c60d9a835029389712c5f6cc30720bc5562519d + Tertiary 2: + Name: Lincoln Bryant + ID: 0a22bab3de2d83d723811e3fb1ebca904e924a97 + FQDN: ap23.uc.osg-htc.org + Services: + Submit Node: + Description: OS Pool access point + XRootD origin server: + Description: OSG Connect Origin Server + Tags: + - OSPool + AllowedVOs: + - OSG + UChicago_OSGConnect_flock: Active: false Description: Flock access point for the OS Pool diff --git a/topology/University of Chicago/VC3/VC3.yaml b/topology/University of Chicago/VC3/VC3.yaml index 44fa0785c..d5d3e97c7 100644 --- a/topology/University of Chicago/VC3/VC3.yaml +++ b/topology/University of Chicago/VC3/VC3.yaml @@ -5,7 +5,7 @@ GroupDescription: This is a small cluster to test VC3 integration Resources: VC3_TEST_CMS: Active: false - ID: 994 + ID: 1343 Description: The Hosted CE serving VC3 ContactLists: Administrative Contact: diff --git a/topology/University of Colorado/CU - Research Computing/CUmulus.yaml b/topology/University of Colorado/CU - Research Computing/CUmulus.yaml index c827aaef9..88c810c85 100644 --- a/topology/University of Colorado/CU - Research Computing/CUmulus.yaml +++ b/topology/University of Colorado/CU - Research Computing/CUmulus.yaml @@ -24,7 +24,7 @@ Resources: Description: This is a Research Computing CUmulus cloud host for the University of Colorado - Boulder. # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` # Otherwise, leave it blank and we will fill in the appropriate value for you. - ID: 1119 + ID: 1353 # ContactLists contain information about people to contact regarding this resource. # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml # If you cannot find the contact above XML, please register the contact: diff --git a/topology/University of Connecticut/UConn-OSG/UConn-OSG.yaml b/topology/University of Connecticut/UConn-OSG/UConn-OSG.yaml index dd77274d6..f4f49ffcd 100644 --- a/topology/University of Connecticut/UConn-OSG/UConn-OSG.yaml +++ b/topology/University of Connecticut/UConn-OSG/UConn-OSG.yaml @@ -114,7 +114,7 @@ Resources: FQDN: gandalf.phys.uconn.edu FQDNAliases: - gandalf.phys.uconn.edu - ID: 287 + ID: 1377 Services: XRootD origin server: Description: StashCache Origin server for UConn-OSG diff --git a/topology/University of Connecticut/UConn-Xanadu/UConn-Xanadu.yaml b/topology/University of Connecticut/UConn-Xanadu/UConn-Xanadu.yaml index cf586c8b7..08e5c16ed 100644 --- a/topology/University of Connecticut/UConn-Xanadu/UConn-Xanadu.yaml +++ b/topology/University of Connecticut/UConn-Xanadu/UConn-Xanadu.yaml @@ -4,7 +4,7 @@ GroupDescription: OSG partition of the Xanadu HPC Cluster GroupID: 1113 Resources: UConn-Xanadu: - Active: true + Active: false ContactLists: Administrative Contact: Primary: diff --git a/topology/University of Edinburgh/Scotgrid ECDF/UKI-SCOTGRID-CDF.yaml b/topology/University of Edinburgh/Scotgrid ECDF/UKI-SCOTGRID-CDF.yaml index 178605b5f..7c706e63a 100644 --- a/topology/University of Edinburgh/Scotgrid ECDF/UKI-SCOTGRID-CDF.yaml +++ b/topology/University of Edinburgh/Scotgrid ECDF/UKI-SCOTGRID-CDF.yaml @@ -7,7 +7,7 @@ Resources: UKI-SCOTGRID-ECDF-STASHCACHE: Active: true Description: This is an OSDF cache at Scotgrid ECDF. - ID: 1269 + ID: 1363 ContactLists: Administrative Contact: Primary: diff --git a/topology/University of Florida/UF HPC/UFlorida-HPC.yaml b/topology/University of Florida/UF HPC/UFlorida-HPC.yaml index 6c4ab298b..0aef89a0b 100644 --- a/topology/University of Florida/UF HPC/UFlorida-HPC.yaml +++ b/topology/University of Florida/UF HPC/UFlorida-HPC.yaml @@ -210,14 +210,14 @@ Resources: ID: 2d9012f731159dd45a082164c6aac6577167e725 Name: Bockjoo Kim Description: Xrootd Redirector - FQDN: cmsio7.rc.ufl.edu + FQDN: cmsio2.rc.ufl.edu ID: 1000 Services: XRootD component: Description: Xrootd Redirector Details: hidden: false - uri_override: cmsio7.rc.ufl.edu:1094 + uri_override: cmsio2.rc.ufl.edu:1094 VOOwnership: CMS: 100 WLCGInformation: @@ -250,7 +250,7 @@ Resources: ID: 2d9012f731159dd45a082164c6aac6577167e725 Name: Bockjoo Kim Description: The first squid server for the U of Florida CMS Tier2. - FQDN: squid1.rc.ufl.edu + FQDN: cmssquid1.rc.ufl.edu ID: 684 Services: Squid: @@ -275,7 +275,7 @@ Resources: ID: 2d9012f731159dd45a082164c6aac6577167e725 Name: Bockjoo Kim Description: Second squid server for U of Florida CMS Tier2 - FQDN: squid2.rc.ufl.edu + FQDN: cmssquid2.rc.ufl.edu ID: 685 Services: Squid: diff --git a/topology/University of Florida/UF HPC/UFlorida-HPC_downtime.yaml b/topology/University of Florida/UF HPC/UFlorida-HPC_downtime.yaml index c490f1f96..4ee51e4ef 100644 --- a/topology/University of Florida/UF HPC/UFlorida-HPC_downtime.yaml +++ b/topology/University of Florida/UF HPC/UFlorida-HPC_downtime.yaml @@ -761,3 +761,146 @@ Services: - CE # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1377183081 + Description: Corrective downtime for the power at the Research Computing Center + Severity: Outage + StartTime: Jan 02, 2023 22:45 +0000 + EndTime: Jan 09, 2023 13:05 +0000 + CreatedTime: Jan 03, 2023 03:58 +0000 + ResourceName: UFlorida-CMS + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1377183656 + Description: Corrective downtime for the power at the Research Computing Center + Severity: Outage + StartTime: Jan 02, 2023 22:45 +0000 + EndTime: Jan 09, 2023 13:05 +0000 + CreatedTime: Jan 03, 2023 03:59 +0000 + ResourceName: UFlorida-HPC + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1377184142 + Description: Corrective downtime for the power at the Research Computing Center + Severity: Outage + StartTime: Jan 02, 2023 22:45 +0000 + EndTime: Jan 09, 2023 13:05 +0000 + CreatedTime: Jan 03, 2023 04:00 +0000 + ResourceName: UFlorida-HPG2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1377185990 + Description: Corrective downtime for the power at the Research Computing Center + Severity: Outage + StartTime: Jan 02, 2023 22:45 +0000 + EndTime: Jan 09, 2023 13:05 +0000 + CreatedTime: Jan 03, 2023 04:03 +0000 + ResourceName: UFlorida-XRD + Services: + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1382875724 + Description: RHEL8 upgrade + Severity: Outage + StartTime: Jan 09, 2023 18:05 +0000 + EndTime: Jun 22, 2023 16:00 +0000 + CreatedTime: Jan 09, 2023 18:06 +0000 + ResourceName: UFlorida-HPC + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1383595572 + Description: Network issue + Severity: Outage + StartTime: Jan 10, 2023 14:05 +0000 + EndTime: Jan 13, 2023 22:00 +0000 + CreatedTime: Jan 10, 2023 14:05 +0000 + ResourceName: UFlorida-CMS + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1383596298 + Description: Network issue + Severity: Outage + StartTime: Jan 10, 2023 14:05 +0000 + EndTime: Jan 13, 2023 22:00 +0000 + CreatedTime: Jan 10, 2023 14:07 +0000 + ResourceName: UFlorida-HPG2 + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1383596493 + Description: Network issue + Severity: Outage + StartTime: Jan 10, 2023 14:05 +0000 + EndTime: Jan 13, 2023 22:00 +0000 + CreatedTime: Jan 10, 2023 14:07 +0000 + ResourceName: UFlorida-XRD + Services: + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1458013400 + Description: Lustre needs an OS upgrade to RHEL7,9 + Severity: Outage + StartTime: Apr 17, 2023 13:00 +0000 + EndTime: Apr 18, 2023 21:00 +0000 + CreatedTime: Apr 06, 2023 17:15 +0000 + ResourceName: UFlorida-XRD + Services: + - XRootD component +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1467415292 + Description: RHEL 7-9 upgrade for SE requires the downtime + Severity: Outage + StartTime: Apr 17, 2023 14:24 +0000 + EndTime: Apr 18, 2023 21:00 +0000 + CreatedTime: Apr 17, 2023 14:25 +0000 + ResourceName: UFlorida-CMS + Services: + - CE +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1467415904 + Description: RHEL 7-9 upgrade for SE requires the downtime + Severity: Outage + StartTime: Apr 17, 2023 14:24 +0000 + EndTime: Apr 18, 2023 21:00 +0000 + CreatedTime: Apr 17, 2023 14:26 +0000 + ResourceName: UFlorida-HPG2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1522712596 + Description: CE upgrade to RHEL8 + Severity: Outage + StartTime: Jun 27, 2023 12:58 +0000 + EndTime: Jun 27, 2023 21:26 +0000 + CreatedTime: Jun 20, 2023 14:27 +0000 + ResourceName: UFlorida-HPG2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1522717647 + Description: CE upgrade to RHEL8 + Severity: Outage + StartTime: Jun 28, 2023 12:58 +0000 + EndTime: Jun 28, 2023 21:26 +0000 + CreatedTime: Jun 20, 2023 14:36 +0000 + ResourceName: UFlorida-CMS + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/University of Hawaii/Information Technology Center/ITC-NRP.yaml b/topology/University of Hawaii/Information Technology Center/ITC-NRP.yaml new file mode 100644 index 000000000..fc6892ee1 --- /dev/null +++ b/topology/University of Hawaii/Information Technology Center/ITC-NRP.yaml @@ -0,0 +1,20 @@ +GroupID: 1331 +GroupDescription: Origin for Information Technology Services (University of Hawaii, System) +SupportCenter: Self Supported +Production: true +Resources: + ITC_OSDF_ORIGIN: + Active: true + Description: ITC OSDF Origin + ID: 1349 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: fiona.its.hawaii.edu + Services: + XRootD origin server: + Description: ITC OSDF Origin + AllowedVOs: + - ANY diff --git a/topology/University of Hawaii/Institute for Astronomy ITC/SITE.yaml b/topology/University of Hawaii/Information Technology Center/SITE.yaml similarity index 100% rename from topology/University of Hawaii/Institute for Astronomy ITC/SITE.yaml rename to topology/University of Hawaii/Information Technology Center/SITE.yaml diff --git a/topology/University of Hawaii/Institute for Astronomy HURP/IFAHURPOrigin.yaml b/topology/University of Hawaii/Institute for Astronomy HURP/IFAHURP.yaml similarity index 89% rename from topology/University of Hawaii/Institute for Astronomy HURP/IFAHURPOrigin.yaml rename to topology/University of Hawaii/Institute for Astronomy HURP/IFAHURP.yaml index a11bf72af..c9a979e04 100644 --- a/topology/University of Hawaii/Institute for Astronomy HURP/IFAHURPOrigin.yaml +++ b/topology/University of Hawaii/Institute for Astronomy HURP/IFAHURP.yaml @@ -11,7 +11,7 @@ Resources: Administrative Contact: Primary: Name: Fabio Andrijauskas - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + ID: OSG1000162 FQDN: prp01.ifa.hawaii.edu Services: XRootD origin server: diff --git a/topology/University of Illinois at Urbana Champaign/Illinois High Energy Physics/IllinoisHEP.yaml b/topology/University of Illinois at Urbana Champaign/Illinois High Energy Physics/IllinoisHEP.yaml index f0e99541d..6b3de8b18 100644 --- a/topology/University of Illinois at Urbana Champaign/Illinois High Energy Physics/IllinoisHEP.yaml +++ b/topology/University of Illinois at Urbana Champaign/Illinois High Energy Physics/IllinoisHEP.yaml @@ -41,7 +41,7 @@ Resources: Name: David Lesny Description: This is the LFC node for the DDM in our Tier3gs FQDN: osgx3.hep.uiuc.edu - ID: 265 + ID: 1341 Services: LFC: Description: Logical File Catalog diff --git a/topology/University of Illinois at Urbana Champaign/NCSA/NCSA-DES.yaml b/topology/University of Illinois at Urbana Champaign/NCSA/NCSA-DES.yaml index ba82eb960..1f7e37847 100644 --- a/topology/University of Illinois at Urbana Champaign/NCSA/NCSA-DES.yaml +++ b/topology/University of Illinois at Urbana Champaign/NCSA/NCSA-DES.yaml @@ -42,7 +42,7 @@ Resources: - ANY NCSA-DES-CMP3: - Active: true + Active: False Description: NCSA DES OS Pool access point ID: 1208 ContactLists: diff --git a/topology/University of Maine System/FACILITY.yaml b/topology/University of Maine System/FACILITY.yaml new file mode 100644 index 000000000..e1f868278 --- /dev/null +++ b/topology/University of Maine System/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10207 diff --git a/topology/University of Maine System/Maine-ACG/Maine-ACG.yaml b/topology/University of Maine System/Maine-ACG/Maine-ACG.yaml new file mode 100644 index 000000000..1731a24fd --- /dev/null +++ b/topology/University of Maine System/Maine-ACG/Maine-ACG.yaml @@ -0,0 +1,86 @@ +GroupDescription: osg-ce.maine.edu +GroupID: 1346 +Production: true +Resources: + Maine-ACG-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE for Univeristy of Maine Advanced Computing Group + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1422 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Secondary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: maine-acg-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Maine-ACG CE1 hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + Tags: + - CC* + +SupportCenter: Community Support Center diff --git a/topology/University of Maine System/Maine-ACG/SITE.yaml b/topology/University of Maine System/Maine-ACG/SITE.yaml new file mode 100644 index 000000000..a555fc974 --- /dev/null +++ b/topology/University of Maine System/Maine-ACG/SITE.yaml @@ -0,0 +1,8 @@ +City: Orono +Country: United States +ID: 10358 +Latitude: 44.8994 +Longitude: -68.6681 +State: ME +Zipcode: '04469' + diff --git a/topology/University of Maryland/UMD-CMS/umd-cms.yaml b/topology/University of Maryland/UMD-CMS/umd-cms.yaml index 3cfcfd904..f384538c7 100644 --- a/topology/University of Maryland/UMD-CMS/umd-cms.yaml +++ b/topology/University of Maryland/UMD-CMS/umd-cms.yaml @@ -4,7 +4,7 @@ GroupID: 159 Production: true Resources: umd-ce: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -64,7 +64,7 @@ Resources: VOOwnership: CMS: 100 umd-cms: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -96,7 +96,7 @@ Resources: StorageCapacityMax: 0 StorageCapacityMin: 0 umd-gridftp: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -137,7 +137,7 @@ Resources: Details: hidden: false umd-se2: - Active: false + Active: true ContactLists: Administrative Contact: Primary: @@ -158,10 +158,14 @@ Resources: Description: XRootD SE Details: hidden: false + WebDAV: + Description: WebDAV service endpoint + Details: + hidden: false VOOwnership: CMS: 100 umd-squid: - Active: true + Active: false ContactLists: Administrative Contact: Primary: diff --git a/topology/University of Maryland/UMD_SIAB/UMD_SIAB.yaml b/topology/University of Maryland/UMD_SIAB/UMD_SIAB.yaml index d48be0795..372c36632 100644 --- a/topology/University of Maryland/UMD_SIAB/UMD_SIAB.yaml +++ b/topology/University of Maryland/UMD_SIAB/UMD_SIAB.yaml @@ -5,7 +5,7 @@ GroupID: 510 GroupDescription: The UMD_SIAB cluster Resources: OSG_US_UMD_SIAB: - ID: 1002 + ID: 1345 Disable: false Description: The Hosted CE serving UMD_SIAB ContactLists: diff --git a/topology/University of Massachusetts - Amherst/FACILITY.yaml b/topology/University of Massachusetts - Amherst/FACILITY.yaml new file mode 100644 index 000000000..4e182bd65 --- /dev/null +++ b/topology/University of Massachusetts - Amherst/FACILITY.yaml @@ -0,0 +1 @@ +ID: 10206 diff --git a/topology/University of Massachusetts - Amherst/NET2/NET2.yaml b/topology/University of Massachusetts - Amherst/NET2/NET2.yaml new file mode 100644 index 000000000..77fbeda4b --- /dev/null +++ b/topology/University of Massachusetts - Amherst/NET2/NET2.yaml @@ -0,0 +1,137 @@ +GroupDescription: Placeholder for NET2 +GroupID: 1365 +Production: true +SupportCenter: USATLAS +Resources: + NET2_SE_WebDAV: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000284 + Name: Eduardo Bach + Secondary: + ID: OSG1000443 + Name: William Leight + Security Contact: + Primary: + ID: OSG1000284 + Name: Eduardo Bach + Secondary: + ID: OSG1000443 + Name: William Leight + Description: HTTP-TPC WebDAV service for NET2 + FQDN: webdav.data.net2.mghpcc.org + ID: 1471 + Services: + WebDAV: + Description: HTTP-TPC WebDAV service + Details: + hidden: false + VOOwnership: + ATLAS: 100 + WLCGInformation: + APELNormalFactor: 0 + AccountingName: US-NET2 + HEPSPEC: 0 + InteropAccounting: true + InteropBDII: true + InteropMonitoring: true + KSI2KMax: 0 + KSI2KMin: 0 + StorageCapacityMax: 2000 + StorageCapacityMin: 2000 + TapeCapacity: 0 + NET2_SE_XRootD: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000284 + Name: Eduardo Bach + Secondary: + ID: OSG1000443 + Name: William Leight + Security Contact: + Primary: + ID: OSG1000284 + Name: Eduardo Bach + Secondary: + ID: OSG1000443 + Name: William Leight + Description: XRootD door for NET2 + FQDN: xrootd.data.net2.mghpcc.org + ID: 1472 + Services: + XRootD component: + Description: XRootD door + Details: + hidden: false + VOOwnership: + ATLAS: 100 + WLCGInformation: + APELNormalFactor: 0 + AccountingName: US-NET2 + HEPSPEC: 0 + InteropAccounting: true + InteropBDII: true + InteropMonitoring: true + KSI2KMax: 0 + KSI2KMin: 0 + StorageCapacityMax: 2000 + StorageCapacityMin: 2000 + TapeCapacity: 0 + NET2-PS-BW: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000443 + Name: William Leight + Secondary: + ID: OSG1000284 + Name: Eduardo Bach + Security Contact: + Primary: + ID: OSG1000443 + Name: William Leight + Secondary: + ID: OSG1000284 + Name: Eduardo Bach + Description: This is the perfSONAR-PS bandwidth instance at the NET2 site. + FQDN: argus1.net2.mghpcc.org + ID: 1474 + Services: + net.perfSONAR.Bandwidth: + Description: PerfSonar Bandwidth monitoring node + Details: + endpoint: argus1.net2.mghpcc.org + VOOwnership: + ATLAS: 100 + NET2-PS-LAT: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000443 + Name: William Leight + Secondary: + ID: OSG1000284 + Name: Eduardo Bach + Security Contact: + Primary: + ID: OSG1000443 + Name: William Leight + Secondary: + ID: OSG1000284 + Name: Eduardo Bach + Description: This is the perfSONAR-PS latency instance at the NET2 site. + FQDN: argus2.net2.mghpcc.org + ID: 1475 + Services: + net.perfSONAR.Latency: + Description: PerfSonar Latency monitoring node + Details: + endpoint: argus2.net2.mghpcc.org + VOOwnership: + ATLAS: 100 diff --git a/topology/University of Massachusetts - Amherst/NET2/SITE.yaml b/topology/University of Massachusetts - Amherst/NET2/SITE.yaml new file mode 100644 index 000000000..d1d69fd9b --- /dev/null +++ b/topology/University of Massachusetts - Amherst/NET2/SITE.yaml @@ -0,0 +1,9 @@ +LongName: University of Massachusetts - Amherst +Description: U.S. ATLAS Northeast Tier 2 +ID: 10353 +City: Amherst +Country: United States +State: MA +Zipcode: 01003 +Latitude: 42.38 +Longitude: -72.52 diff --git a/topology/University of Michigan/AGLT2/AGLT2.yaml b/topology/University of Michigan/AGLT2/AGLT2.yaml index b4ba214a3..2329b25e4 100644 --- a/topology/University of Michigan/AGLT2/AGLT2.yaml +++ b/topology/University of Michigan/AGLT2/AGLT2.yaml @@ -2,7 +2,7 @@ GroupDescription: (No resource group description) GroupID: 1 Production: true Resources: - AGLT2-squid: + AGLT2-squid-2: Active: true ContactLists: Administrative Contact: @@ -25,15 +25,18 @@ Resources: Tertiary: ID: a833f94ad3840fe779702409c6b778d79aaed76f Name: Shawn McKee - Description: This is the round-robin DNS alias for the SQUIDs at AGLT2 - FQDN: squid.aglt2.org - ID: 677 + Description: This is the slate SQUID at AGLT2 + FQDN: sl-um-es3.slateci.io + ID: 1129 Services: Squid: Description: Generic squid service + Details: + uri_override: sl-um-es3.slateci.io:30113 + Monitored: true VOOwnership: ATLAS: 90 - AGLT2-squid-2: + AGLT2-squid-3: Active: true ContactLists: Administrative Contact: @@ -57,17 +60,16 @@ Resources: ID: a833f94ad3840fe779702409c6b778d79aaed76f Name: Shawn McKee Description: This is the slate SQUID at AGLT2 - FQDN: sl-um-es3.slateci.io - ID: 1129 + FQDN: sl-um-es5.slateci.io + ID: 1132 Services: Squid: Description: Generic squid service Details: - uri_override: sl-um-es3.slateci.io:30113 Monitored: true VOOwnership: - ATLAS: 90 - AGLT2-squid-3: + ATLAS: 90 + AGLT2-squid-4: Active: true ContactLists: Administrative Contact: @@ -90,17 +92,18 @@ Resources: Tertiary: ID: a833f94ad3840fe779702409c6b778d79aaed76f Name: Shawn McKee - Description: This is the slate SQUID at AGLT2 - FQDN: sl-um-es5.slateci.io - ID: 1132 + Description: This is the slate Varnish for Frontier + FQDN: sl-um-es2.slateci.io + ID: 1314 Services: Squid: - Description: Generic squid service + Description: Generic varnish service Details: + uri_override: sl-um-es2.slateci.io:6081 Monitored: true VOOwnership: - ATLAS: 90 - AGLT2-squid-4: + ATLAS: 90 + AGLT2-squid-5: Active: true ContactLists: Administrative Contact: @@ -123,17 +126,18 @@ Resources: Tertiary: ID: a833f94ad3840fe779702409c6b778d79aaed76f Name: Shawn McKee - Description: This is the slate Varnish for Frontier - FQDN: es02.aglt2.org - ID: 1314 + Description: This is the slate Varnish 1 for CVMFS + FQDN: sl-um-es3.slateci.io + ID: 1315 Services: Squid: Description: Generic varnish service Details: + uri_override: sl-um-es3.slateci.io:6081 Monitored: true VOOwnership: ATLAS: 90 - AGLT2-squid-5: + AGLT2-squid-6: Active: true ContactLists: Administrative Contact: @@ -156,16 +160,17 @@ Resources: Tertiary: ID: a833f94ad3840fe779702409c6b778d79aaed76f Name: Shawn McKee - Description: This is the slate Varnish for CVMFS - FQDN: es01.aglt2.org - ID: 1315 + Description: This is the slate Varnish 2 for CVMFS + FQDN: sl-msu-es1.slateci.io + ID: 1423 Services: Squid: Description: Generic varnish service Details: + uri_override: sl-msu-es1.slateci.io:6081 Monitored: true VOOwnership: - ATLAS: 90 + ATLAS: 100 AGLT2_CE_2: Active: true ContactLists: diff --git a/topology/University of Michigan/AGLT2/AGLT2_downtime.yaml b/topology/University of Michigan/AGLT2/AGLT2_downtime.yaml index 2e0e67e8b..6c440d65b 100644 --- a/topology/University of Michigan/AGLT2/AGLT2_downtime.yaml +++ b/topology/University of Michigan/AGLT2/AGLT2_downtime.yaml @@ -1054,3 +1054,82 @@ Services: - Squid # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360408285 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:00 +0000 + ResourceName: AGLT2_SL7 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360409152 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:01 +0000 + ResourceName: AGLT2_CE_2 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360409338 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:02 +0000 + ResourceName: AGLT2_CE_3 + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360409718 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:02 +0000 + ResourceName: AGLT2_SE + Services: + - SRMv2 + - WebDAV +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360409990 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:03 +0000 + ResourceName: AGLT2_XRootD_door + Services: + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360410214 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:03 +0000 + ResourceName: AGLT2-squid-2 + Services: + - Squid +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360410480 + Description: 'campus network maintenance ' + Severity: No Significant Outage Expected + StartTime: Dec 23, 2022 11:00 +0000 + EndTime: Dec 23, 2022 16:00 +0000 + CreatedTime: Dec 14, 2022 18:04 +0000 + ResourceName: AGLT2-squid-3 + Services: + - Squid +# --------------------------------------------------------- + diff --git a/topology/University of Nebraska/Nebraska-CMS/Nebraska.yaml b/topology/University of Nebraska/Nebraska-CMS/Nebraska.yaml index 748a05958..a0a00d571 100644 --- a/topology/University of Nebraska/Nebraska-CMS/Nebraska.yaml +++ b/topology/University of Nebraska/Nebraska-CMS/Nebraska.yaml @@ -253,6 +253,7 @@ Resources: APELNormalFactor: 10.62 AccountingName: T2_US_Nebraska HEPSPEC: 100245 + HEPScore23Percentage: 0.1 InteropAccounting: true InteropBDII: true InteropMonitoring: true diff --git a/topology/University of Nebraska/Nebraska-Lincoln/UNLCachingInfrastructure.yaml b/topology/University of Nebraska/Nebraska-Lincoln/UNLCachingInfrastructure.yaml index bd7f58506..3c4afb17c 100644 --- a/topology/University of Nebraska/Nebraska-Lincoln/UNLCachingInfrastructure.yaml +++ b/topology/University of Nebraska/Nebraska-Lincoln/UNLCachingInfrastructure.yaml @@ -13,104 +13,6 @@ GroupID: 493 # Resources contains one or more resources in this # ResourceGroup. A resource provides one or more services Resources: - # Resource Name should be a short descriptor of the resource. - # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" - # Resource Names need to be unique across all resources in the OSG. - HCC-Stash: - # Active is true if the resource is accepting requests, and false otherwise. - # When first registering a resource, set this to false. Set it to true when it's ready for production. - Active: true - # Description is a long description of the resource; may be multiple lines - Description: HCC StashCache XRootD caching proxy - # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` - # Otherwise, leave it blank and we will fill in the appropriate value for you. - ID: 978 - # ContactLists contain information about people to contact regarding this resource. - # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml - # If you cannot find the contact above XML, please register the contact: - # https://opensciencegrid.org/docs/common/registration/#registering-contacts - ContactLists: - # Administrative Contact is one to three people to contact regarding administrative issues - Administrative Contact: - Primary: - Name: John Thiltges - ID: f7fbc93bc8a7d276e8b5a94fb4ff905841a7763f - Secondary: - Name: Garhan Attebury - ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 - Tertiary: - Name: Derek Weitzel - ID: 5d324b2a0011c48462f5c6d981b307e3733cb8b6 - - # Security Contact is one to three people to contact regarding security issues - Security Contact: - Primary: - Name: Garhan Attebury - ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 - # Secondary: - # Name: - # ID: - # Tertiary: - # Name: - # ID: - - # FQDN is the fully qualified domain name of the host running this resource - FQDN: hcc-stash.unl.edu - ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed - # FQDNAliases: - # - - # - - - DN: /DC=org/DC=incommon/C=US/postalCode=68588/ST=NE/L=Lincoln/street=14th And R St./O=University of Nebraska-Lincoln/OU=Holland Computing Center/CN=hcc-stash.unl.edu - - # Services is one or more services provided by this resource; - # valid services are listed in topology/services.yaml with the format ": " - Services: - XRootD cache server: - # Description is a brief description of the service - Description: HCC Caching Server - ### Details (optional) - # Details: - # # hidden - # hidden: false - # ### uri_override (optional, use if your service is on some non-standard URL) - # # uri_override: : - # ### sam_uri (optional) - # # sam_uri: htcondor://... - # ### endpoint (for perfSONAR services) - # # endpoint: - - # Other services if you have any - # : - # ... - - ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. - ### If part of the resource is not owned by the VO, do not list it. - ### The total percentage cannot exceed 100. - # VOOwnership: - # : - # : - - AllowedVOs: - - ANY - - ### WLCGInformation (optional) is only for resources that are part of the WLCG - # WLCGInformation: - # APELNormalFactor: 0.0 - # AccountingName: - # HEPSPEC: 0 - # InteropAccounting: true - # InteropBDII: true - # InteropMonitoring: true - # KSI2KMax: 0 - # KSI2KMin: 0 - # StorageCapacityMax: 0 - # StorageCapacityMin: 0 - # TapeCapacity: 0 - - # Other resources if you have any... - # : - # ... HCC-Origin: Active: false Description: HCC StashCache XRootD origin @@ -195,3 +97,32 @@ Resources: Description: LIGO StashCache Origin Server AllowedVOs: - LIGO + + NEBRASKA_NRP_OSDF_CACHE: + Active: true + Description: Nebraska NRP OSDF Cache + ID: 1347 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Secondary: + Name: John Thiltges + ID: f7fbc93bc8a7d276e8b5a94fb4ff905841a7763f + Tertiary: + Name: Garhan Attebury + ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 + + Security Contact: + Primary: + Name: Garhan Attebury + ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 + + FQDN: unl-cache.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=unl-cache.nationalresearchplatform.org + Services: + XRootD cache server: + Description: Nebraska NRP OSDF Cache + AllowedVOs: + - ANY diff --git a/topology/University of Nebraska/Nebraska-Lincoln/UNLNRPOrigin.yaml b/topology/University of Nebraska/Nebraska-Lincoln/UNLNRPOrigin.yaml new file mode 100644 index 000000000..a57222c7d --- /dev/null +++ b/topology/University of Nebraska/Nebraska-Lincoln/UNLNRPOrigin.yaml @@ -0,0 +1,33 @@ +Production: True +SupportCenter: Community Support Center +GroupDescription: NRP Origin infrastructure in Nebraska +GroupID: 1333 +Resources: + NEBRASKA_NRP_OSDF_ORIGIN: + Active: True + Description: Nebraska NRP OSDF Origin + ID: 1392 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Secondary: + Name: John Thiltges + ID: OSG1000004 + Tertiary: + Name: Derek Weitzel + ID: OSG1000006 + Security Contact: + Primary: + Name: Garhan Attebury + ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 + FQDN: unl-origin.nationalresearchplatform.org + DN: /CN=hcc-nrp-shor-c6005.unl.edu + Services: + XRootD origin server: + # Description is a brief description of the service + Description: Nebraska NRP OSDF Origin + AllowedVOs: + - ANY + diff --git a/topology/University of Nebraska/Nebraska-Omaha/Crane.yaml b/topology/University of Nebraska/Nebraska-Omaha/Crane.yaml index bc82bc7b1..5e573a792 100644 --- a/topology/University of Nebraska/Nebraska-Omaha/Crane.yaml +++ b/topology/University of Nebraska/Nebraska-Omaha/Crane.yaml @@ -3,7 +3,7 @@ GroupID: 388 Production: true Resources: Crane-CE1: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -47,29 +47,4 @@ Resources: KSI2KMin: 0 StorageCapacityMax: 0 StorageCapacityMin: 0 - HCC-PKI-Proxy: - Active: true - ContactLists: - Administrative Contact: - Primary: - ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 - Name: Garhan Attebury - Secondary: - ID: a2d43374cb67fd2f248f56d7819b77726dfeaa2b - Name: Carl Lundstedt - Security Contact: - Primary: - ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 - Name: Garhan Attebury - Secondary: - ID: a2d43374cb67fd2f248f56d7819b77726dfeaa2b - Name: Carl Lundstedt - Description: Round robin DNS alias for HCC Squids in Omaha - FQDN: hcc-pki-proxy.unl.edu - ID: 1004 - Services: - Squid: - Description: Generic squid service - VOOwnership: - HCC: 100 SupportCenter: Community Support Center diff --git a/topology/University of Nebraska/Nebraska-Omaha/Crane_downtime.yaml b/topology/University of Nebraska/Nebraska-Omaha/Crane_downtime.yaml index 4827ff41a..97ca41837 100644 --- a/topology/University of Nebraska/Nebraska-Omaha/Crane_downtime.yaml +++ b/topology/University of Nebraska/Nebraska-Omaha/Crane_downtime.yaml @@ -20,3 +20,14 @@ Services: - CE # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1357637656 + Description: CE will be upgraded/replaced after cooling outage + Severity: Outage + StartTime: Dec 10, 2022 13:00 +0000 + EndTime: Dec 23, 2022 23:00 +0000 + CreatedTime: Dec 11, 2022 13:02 +0000 + ResourceName: Crane-CE1 + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/University of Nebraska/Nebraska-Omaha/Swan.yaml b/topology/University of Nebraska/Nebraska-Omaha/Swan.yaml index f5557083d..2c1fb1317 100644 --- a/topology/University of Nebraska/Nebraska-Omaha/Swan.yaml +++ b/topology/University of Nebraska/Nebraska-Omaha/Swan.yaml @@ -47,4 +47,29 @@ Resources: KSI2KMin: 0 StorageCapacityMax: 0 StorageCapacityMin: 0 + HCC-PKI-Proxy: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 + Name: Garhan Attebury + Secondary: + ID: a2d43374cb67fd2f248f56d7819b77726dfeaa2b + Name: Carl Lundstedt + Security Contact: + Primary: + ID: e86d60dc841731aebfd879d5883d66ebab20cbd2 + Name: Garhan Attebury + Secondary: + ID: a2d43374cb67fd2f248f56d7819b77726dfeaa2b + Name: Carl Lundstedt + Description: Round robin DNS alias for HCC Squids in Omaha + FQDN: hcc-pki-proxy.unl.edu + ID: 1004 + Services: + Squid: + Description: Generic squid service + VOOwnership: + HCC: 100 SupportCenter: Community Support Center diff --git a/topology/University of Notre Dame/ND_CAML/ND_CAMLGPU.yaml b/topology/University of Notre Dame/ND_CAML/ND_CAMLGPU.yaml index 16293cc54..2c2532c3b 100644 --- a/topology/University of Notre Dame/ND_CAML/ND_CAMLGPU.yaml +++ b/topology/University of Notre Dame/ND_CAML/ND_CAMLGPU.yaml @@ -68,4 +68,37 @@ Resources: KSI2KMin: 100 StorageCapacityMax: 4 StorageCapacityMin: 1 + ND-CAML-GPU-CE1: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: 030408ab932e143859b5f97a2d1c9e30ba2a9f0d + Name: Marco Mascheroni + Security Contact: + Primary: + ID: 030408ab932e143859b5f97a2d1c9e30ba2a9f0d + Name: Marco Mascheroni + Description: GPU Cluster at Notre Dame. + FQDN: nd-caml-gpu-ce1.svc.opensciencegrid.org + ID: 1469 + Services: + CE: + Description: Compute Element + Details: + hidden: false + Tags: + - CC* + VOOwnership: + CMS: 100 + WLCGInformation: + APELNormalFactor: 0 + HEPSPEC: 85 + InteropAccounting: false + InteropBDII: true + InteropMonitoring: true + KSI2KMax: 500 + KSI2KMin: 100 + StorageCapacityMax: 4 + StorageCapacityMin: 1 SupportCenter: NWICG diff --git a/topology/University of Notre Dame/NWICG_NDCMS/ND_CMS_GPU.yaml b/topology/University of Notre Dame/NWICG_NDCMS/ND_CMS_GPU.yaml index 06942af41..59aadaa32 100644 --- a/topology/University of Notre Dame/NWICG_NDCMS/ND_CMS_GPU.yaml +++ b/topology/University of Notre Dame/NWICG_NDCMS/ND_CMS_GPU.yaml @@ -17,7 +17,7 @@ Resources: # Dummy FQDN so it doesn't match Batch records, but the resource # will match Payload records in GRACC FQDN: hosted-ce35.grid.uchicago.edu-notusing - ID: 268 + ID: 1376 Services: CE: Description: Compute Element diff --git a/topology/University of Oklahoma/OU ATLAS/OU_OCHEP_SWT2.yaml b/topology/University of Oklahoma/OU ATLAS/OU_OCHEP_SWT2.yaml index 1829574bc..e2a51faab 100644 --- a/topology/University of Oklahoma/OU ATLAS/OU_OCHEP_SWT2.yaml +++ b/topology/University of Oklahoma/OU ATLAS/OU_OCHEP_SWT2.yaml @@ -44,9 +44,9 @@ Resources: APELNormalFactor: 8.82 AccountingName: US-SWT2 HEPSPEC: 7443 - InteropAccounting: true - InteropBDII: true - InteropMonitoring: true + InteropAccounting: false + InteropBDII: false + InteropMonitoring: false KSI2KMax: 1389 KSI2KMin: 1389 StorageCapacityMax: 500 diff --git a/topology/University of Oklahoma/OU ATLAS/OU_OSCER_ATLAS_downtime.yaml b/topology/University of Oklahoma/OU ATLAS/OU_OSCER_ATLAS_downtime.yaml index 2f65533a7..023661a50 100644 --- a/topology/University of Oklahoma/OU ATLAS/OU_OSCER_ATLAS_downtime.yaml +++ b/topology/University of Oklahoma/OU ATLAS/OU_OSCER_ATLAS_downtime.yaml @@ -541,3 +541,159 @@ - GridFtp - XRootD component # --------------------------------------------------------- +- Class: SCHEDULED + ID: 1360985856 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: Dec 14, 2022 13:00 +0000 + EndTime: Dec 16, 2022 02:00 +0000 + CreatedTime: Dec 13, 2022 10:03 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1419023604 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: Feb 22, 2023 14:00 +0000 + EndTime: Feb 23, 2023 14:00 +0000 + CreatedTime: Feb 20, 2023 14:12 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1419023605 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: Feb 22, 2023 14:00 +0000 + EndTime: Feb 23, 2023 14:00 +0000 + CreatedTime: Feb 20, 2023 14:12 +0000 + ResourceName: OU_OSCER_ATLAS_SE + Services: + - GridFtp + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1431343526 + Description: CE hardware upgrade + Severity: Outage + StartTime: Mar 07, 2023 06:00 +0000 + EndTime: Mar 10, 2023 14:00 +0000 + CreatedTime: Mar 05, 2023 20:25 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1444133833 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: Mar 22, 2023 13:00 +0000 + EndTime: Mar 23, 2023 05:00 +0000 + CreatedTime: Mar 21, 2023 12:43 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1444133834 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: Mar 22, 2023 13:00 +0000 + EndTime: Mar 23, 2023 05:00 +0000 + CreatedTime: Mar 21, 2023 12:43 +0000 + ResourceName: OU_OSCER_ATLAS_SE + Services: + - GridFtp + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1467578017 + Description: OSCER cluster upgrade + Severity: Outage + StartTime: Apr 19, 2023 13:00 +0000 + EndTime: Apr 20, 2023 23:55 +0000 + CreatedTime: Apr 17, 2023 18:56 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1467578018 + Description: OSCER cluster upgrade + Severity: Outage + StartTime: Apr 19, 2023 13:00 +0000 + EndTime: Apr 20, 2023 23:55 +0000 + CreatedTime: Apr 17, 2023 18:56 +0000 + ResourceName: OU_OSCER_ATLAS_SE + Services: + - GridFtp + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1491912448 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: May 17, 2023 13:00 +0000 + EndTime: May 18, 2023 04:00 +0000 + CreatedTime: May 15, 2023 22:54 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1493451617 + Description: OSCER cluster maintenance + Severity: Outage + StartTime: May 17, 2023 13:00 +0000 + EndTime: May 18, 2023 04:00 +0000 + CreatedTime: May 15, 2023 22:54 +0000 + ResourceName: OU_OSCER_ATLAS_SE + Services: + - GridFtp + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1509713508 + Description: OSCER network upgrade + Severity: Outage + StartTime: Jun 08, 2023 13:00 +0000 + EndTime: Jun 09, 2023 04:00 +0000 + CreatedTime: Jun 05, 2023 13:22 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1509713509 + Description: OSCER network upgrade + Severity: Outage + StartTime: Jun 08, 2023 13:00 +0000 + EndTime: Jun 09, 2023 04:00 +0000 + CreatedTime: Jun 05, 2023 13:22 +0000 + ResourceName: OU_OSCER_ATLAS_SE + Services: + - GridFtp + - XRootD component +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1546161183 + Description: SLURM upgrade + Severity: Outage + StartTime: Jul 19, 2023 13:00 +0000 + EndTime: Jul 20, 2023 02:30 +0000 + CreatedTime: Jul 17, 2023 17:48 +0000 + ResourceName: OU_OSCER_ATLAS + Services: + - CE + - GridFtp +# --------------------------------------------------------- diff --git a/topology/University of South Dakota/USD - Research Computing Group/SITE.yaml b/topology/University of South Dakota/USD - Research Computing Group/SITE.yaml new file mode 100644 index 000000000..a387b7e3b --- /dev/null +++ b/topology/University of South Dakota/USD - Research Computing Group/SITE.yaml @@ -0,0 +1,28 @@ +# LongName is the expanded name of the site +LongName: University of South Dakota +# Description is a brief description of your site +Description: University of South Dakota + +# If you have an up-to-date local git clone, fill ID with the output from `bin/next_site_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +ID: 10363 + +# AddressLine1 is the street address of the site +AddressLine1: 414 E Clark St +### AddressLine2 (optional) is the second line of the street address +# AddressLine2: Room 101 +# City is the city the site is located in +City: Vermillion + +# Country is the country the site is located in +Country: United States +### State (optional) is the state or province the site is located in +# State: Wisconsin +### Zipcode (optional) is the zipcode/postal code of the site +# Zipcode: "01234" + +# Latitude is the latitude of the site (positive values are in the northern hemisphere) +Latitude: 42.7883015 +# Longitude is the longitude of the site (positive values are in the eastern hemisphere) +Longitude: -96.9275268 + diff --git a/topology/University of South Dakota/USD - Research Computing Group/USD-Lawrence.yaml b/topology/University of South Dakota/USD - Research Computing Group/USD-Lawrence.yaml new file mode 100644 index 000000000..28b741d2c --- /dev/null +++ b/topology/University of South Dakota/USD - Research Computing Group/USD-Lawrence.yaml @@ -0,0 +1,139 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: University of South Dakota Lawrence + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1355 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + USD-Lawrence-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE serving USD-Lawrence + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1449 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: usd-lawrence-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + # Tags: + # - + # - + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # HEPScore23Percentage: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # ... diff --git a/topology/University of South Dakota/USD - Research Computing Group/USD-Lawrence_downtime.yaml b/topology/University of South Dakota/USD - Research Computing Group/USD-Lawrence_downtime.yaml new file mode 100644 index 000000000..2660426d6 --- /dev/null +++ b/topology/University of South Dakota/USD - Research Computing Group/USD-Lawrence_downtime.yaml @@ -0,0 +1,11 @@ +- Class: SCHEDULED + ID: 1495336679 + Description: site maintenance window + Severity: Outage + StartTime: May 21, 2023 13:00 +0000 + EndTime: May 23, 2023 22:00 +0000 + CreatedTime: May 19, 2023 22:01 +0000 + ResourceName: USD-Lawrence-CE1 + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/University of South Florida/University of South Florida/USF_SC.yaml b/topology/University of South Florida/University of South Florida/USF_SC.yaml index 09ae75d64..02c5a622e 100644 --- a/topology/University of South Florida/University of South Florida/USF_SC.yaml +++ b/topology/University of South Florida/University of South Florida/USF_SC.yaml @@ -24,8 +24,8 @@ Resources: ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba Site Contact: Primary: - Name: Joseph Botto - ID: 669c00f23e73354429f4e2c8ce560e97bda97f47 + Name: Anthony Green + ID: OSG1000275 FQDN: hosted-ce19.grid.uchicago.edu Services: CE: @@ -33,7 +33,7 @@ Resources: Details: hidden: false USF: - Active: true + Active: false ID: 1150 Description: The Hosted CE serving SC ContactLists: @@ -53,11 +53,40 @@ Resources: ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 Site Contact: Primary: - Name: Joseph Botto - ID: 669c00f23e73354429f4e2c8ce560e97bda97f47 + Name: Anthony Green + ID: OSG1000275 FQDN: hosted-ce18.opensciencegrid.org Services: CE: Description: SC Hosted CE Details: hidden: false + USF-SC: + Active: true + ID: 1460 + Description: The Hosted CE serving SC + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Secondary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Secondary: + Name: Jeffrey Peterson + ID: 3ef2e11c271234a34f154e75b28d3b4554bb8f63 + Site Contact: + Primary: + Name: Anthony Green + ID: OSG1000275 + FQDN: usf-sc-ce1.svc.opensciencegrid.org + Services: + CE: + Description: SC Hosted CE + Details: + hidden: false diff --git a/topology/University of Tennessee Chattanooga/UTC - Epyc/UTC-Epyc.yaml b/topology/University of Tennessee Chattanooga/UTC - Epyc/UTC-Epyc.yaml index 41dfeee80..104894584 100644 --- a/topology/University of Tennessee Chattanooga/UTC - Epyc/UTC-Epyc.yaml +++ b/topology/University of Tennessee Chattanooga/UTC - Epyc/UTC-Epyc.yaml @@ -1,7 +1,7 @@ Production: true SupportCenter: Self Supported GroupDescription: This is a cluster of EPYC processors at University of Tennessee Chatanooga -GroupID: 1112 +GroupID: 1322 Resources: UTC-Epyc: @@ -30,3 +30,5 @@ Resources: Services: CE: Description: Hosted CE for UTC-Epyc + Tags: + - CC* diff --git a/topology/University of Texas Arlington/SWT2 ATLAS UTA/SWT2_CPB.yaml b/topology/University of Texas Arlington/SWT2 ATLAS UTA/SWT2_CPB.yaml index 8014f135d..ad6a78cb6 100644 --- a/topology/University of Texas Arlington/SWT2 ATLAS UTA/SWT2_CPB.yaml +++ b/topology/University of Texas Arlington/SWT2 ATLAS UTA/SWT2_CPB.yaml @@ -46,7 +46,7 @@ Resources: StorageCapacityMin: 5000 TapeCapacity: 0 SWT2_CPB_CE_2: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -76,9 +76,9 @@ Resources: APELNormalFactor: 10.43 AccountingName: US-SWT2 HEPSPEC: 102816 - InteropAccounting: true - InteropBDII: true - InteropMonitoring: true + InteropAccounting: false + InteropBDII: false + InteropMonitoring: false KSI2KMax: 2086 KSI2KMin: 2086 StorageCapacityMax: 5000 @@ -202,7 +202,7 @@ Resources: Name: Mark Sosebee Description: Frontier/CVMFS SLATE based squid service FQDN: slate01.atlas-swt2.org - ID: 1129 + ID: 1380 Services: Squid: Description: Generic squid service diff --git a/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream-TACC.yaml b/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream-TACC.yaml index f39943d08..62a1c2964 100644 --- a/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream-TACC.yaml +++ b/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream-TACC.yaml @@ -15,32 +15,14 @@ Resources: Name: Mats Rynge Description: Jetstream-TACC-Backfill FQDN: js-129-114-104-199.jetstream-cloud.org - ID: 1126 + ID: 1356 Services: Execution Endpoint: Description: OSG VO backfill containers Details: hidden: false - TACC-Jetstream-Backfill-Squid: - Description: Frontier Squid serving Jetstream - ContactLists: - Administrative Contact: - Primary: - ID: 38cd7e4efcb45e2aff808b98f5f928c96b3a8608 - Name: Mats Rynge - Security Contact: - Primary: - ID: 38cd7e4efcb45e2aff808b98f5f928c96b3a8608 - Name: Mats Rynge - FQDN: squid-jetstream-1.sites.osg-htc.org - ID: 1225 - Services: - Squid: - Description: Squid service for frontier and cvmfs - Details: - hidden: false OSG_US_TACC_JETSTREAM: - ID: 1013 + ID: 1346 Description: JetStream TACC CE ContactLists: Administrative Contact: diff --git a/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream2-TACC.yaml b/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream2-TACC.yaml index 8b94f0993..df3a7d328 100644 --- a/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream2-TACC.yaml +++ b/topology/University of Texas at Austin/Texas Advanced Computing Center/Jetstream2-TACC.yaml @@ -1,5 +1,5 @@ GroupDescription: Jetstream2-TACC -GroupID: 1145 +GroupID: 1324 Production: true Resources: TACC-Jetstream2-Backfill: diff --git a/topology/University of Utah/Utah-SCI-VDC/SITE.yaml b/topology/University of Utah/Utah-SCI-VDC/SITE.yaml new file mode 100644 index 000000000..497b285bb --- /dev/null +++ b/topology/University of Utah/Utah-SCI-VDC/SITE.yaml @@ -0,0 +1,13 @@ +LongName: Scientific Computing and Imaging Institute Virtual Data Collaboratory +Description: > + University of Utah's Scientific Computing and Imaging Institute + (SCI) located in Salt Lake City. Test site for the Virtual Data + Collaboratory (VDC) initiative. +ID: 10348 +AddressLine1: 72 S Central Campus Drive, Room 3750 +City: Salt Lake City +Country: United States +State: UT +Zipcode: '84112' +Latitude: 40.7608 +Longitude: -111.891 diff --git a/topology/University of Utah/Utah-SCI-VDC/Utah-SCI-VDC-ITB.yaml b/topology/University of Utah/Utah-SCI-VDC/Utah-SCI-VDC-ITB.yaml new file mode 100644 index 000000000..4dc2cfa75 --- /dev/null +++ b/topology/University of Utah/Utah-SCI-VDC/Utah-SCI-VDC-ITB.yaml @@ -0,0 +1,26 @@ +GroupDescription: Resource group for the SCI VDC ITB site +GroupID: 1336 +Production: false +SupportCenter: Self Supported +Resources: + Utah-SCI-VDC-ITB-ORIGIN: + Active: true + Description: >- + This is a testing OSDF origin server on a VDC resource. + ID: 1401 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000271 + Name: Ivan Rodero + Security Contact: + Primary: + ID: OSG1000271 + Name: Ivan Rodero + FQDN: osg-sci1.datacollaboratory.org + DN: /CN=osg-sci1.datacollaboratory.org + Services: + XRootD origin server: + Description: SCI VDC OSDF Origin Server + AllowedVOs: + - VDC diff --git a/topology/University of Utah/Utah-SLATE-Lonepeak/Utah-SLATE-Lonepeak.yaml b/topology/University of Utah/Utah-SLATE-Lonepeak/Utah-SLATE-Lonepeak.yaml index 21f79e746..0e83c775b 100644 --- a/topology/University of Utah/Utah-SLATE-Lonepeak/Utah-SLATE-Lonepeak.yaml +++ b/topology/University of Utah/Utah-SLATE-Lonepeak/Utah-SLATE-Lonepeak.yaml @@ -43,7 +43,7 @@ Resources: Name: CHPC OSG Support Description: Hosted CE for the lonepeak cluster FQDN: hosted-ce12.grid.uchicago.edu - ID: 1043 + ID: 1350 Services: CE: Description: Compute Element diff --git a/topology/University of Utah/Utah-SLATE-Notchpeak/Utah-SLATE-Notchpeak.yaml b/topology/University of Utah/Utah-SLATE-Notchpeak/Utah-SLATE-Notchpeak.yaml index c591c850d..b03e43e46 100644 --- a/topology/University of Utah/Utah-SLATE-Notchpeak/Utah-SLATE-Notchpeak.yaml +++ b/topology/University of Utah/Utah-SLATE-Notchpeak/Utah-SLATE-Notchpeak.yaml @@ -19,7 +19,7 @@ Resources: Name: CHPC OSG Support Description: Hosted CE for the notchpeak cluster FQDN: sl-uu-hce3.slateci.io - ID: 1042 + ID: 1389 Services: CE: Description: Compute Element diff --git a/topology/University of Utah/Utah-Submit-Node/Utah-Submit-Node.yaml b/topology/University of Utah/Utah-Submit-Node/Utah-Submit-Node.yaml index 55739f949..4f9f9c242 100644 --- a/topology/University of Utah/Utah-Submit-Node/Utah-Submit-Node.yaml +++ b/topology/University of Utah/Utah-Submit-Node/Utah-Submit-Node.yaml @@ -1,5 +1,5 @@ GroupDescription: University of Utah Center for Research and High Performance Computing -GroupID: 528 +GroupID: 1330 Production: true Resources: OSG_US_UUTAH_SUBMIT: diff --git a/topology/University of Washington/University of Washington Research Computing/UW-IT.yaml b/topology/University of Washington/University of Washington Research Computing/UW-IT.yaml index 88d020512..90807afee 100644 --- a/topology/University of Washington/University of Washington Research Computing/UW-IT.yaml +++ b/topology/University of Washington/University of Washington Research Computing/UW-IT.yaml @@ -20,7 +20,7 @@ Resources: UW-IT-CE1: # Active is true if the resource is accepting requests, and false otherwise. # When first registering a resource, set this to false. Set it to true when it's ready for production. - Active: false + Active: true # Description is a long description of the resource; may be multiple lines Description: Hosted CE for UW-IT # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` @@ -114,7 +114,8 @@ Resources: ### Tags (optional) is a list of tags associated with the resource. ### Include the tag "CC*" if applicable for a CC* CE. - # Tags: + Tags: + - CC* # - # - diff --git a/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs.yaml b/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs.yaml index a3372cdca..6f7ad1fab 100644 --- a/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs.yaml +++ b/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs.yaml @@ -11,7 +11,7 @@ Resources: CHTC-DEV-EP-bbockelm: Active: true Description: EP for dev testing for bbockelm - ID: 1260 + ID: 1361 ContactLists: Administrative Contact: Primary: @@ -32,7 +32,7 @@ Resources: CHTC-DEV-EP-blin: Active: true Description: EP for dev testing for blin - ID: 1261 + ID: 1362 ContactLists: Administrative Contact: Primary: diff --git a/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs_downtime.yaml b/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs_downtime.yaml new file mode 100644 index 000000000..d94996c3e --- /dev/null +++ b/topology/University of Wisconsin/CHTC/CHTC-DEV-EPs_downtime.yaml @@ -0,0 +1,11 @@ +- Class: UNSCHEDULED + ID: 1420848127 + Description: test downtime + Severity: Outage + StartTime: Feb 22, 2023 16:53 +0000 + EndTime: Feb 23, 2023 16:53 +0000 + CreatedTime: Feb 22, 2023 16:53 +0000 + ResourceName: CHTC-DEV-EP-matyas + Services: + - Execution Endpoint +# --------------------------------------------------------- diff --git a/topology/University of Wisconsin/CHTC/CHTC-DEV-PROD-EPS.yaml b/topology/University of Wisconsin/CHTC/CHTC-DEV-PROD-EPS.yaml new file mode 100644 index 000000000..de7bb9398 --- /dev/null +++ b/topology/University of Wisconsin/CHTC/CHTC-DEV-PROD-EPS.yaml @@ -0,0 +1,31 @@ +Production: true +SupportCenter: Self Supported + +GroupDescription: >- + Testing EPs for CHTC staff in the production pool; these will generally be + ephemeral, created and destroyed ad-hoc as developers test OSG/CHTC software. + All FQDNs are fake. + +GroupID: 1350 + +Resources: + CHTC-DEV-PROD-EP-matyas: + Active: true + Description: EP for testing in production for matyas + ID: 1434 + ContactLists: + Administrative Contact: + Primary: + Name: Matyas Selmeci + ID: OSG1000002 + + Security Contact: + Primary: + Name: Matyas Selmeci + ID: OSG1000002 + + FQDN: dev-prod-ep.matyas.chtc.wisc.edu + Services: + Execution Endpoint: + Description: Execution Endpoint + # ---------------------------------------------------------------------------- diff --git a/topology/University of Wisconsin/CHTC/CHTC-ITB.yaml b/topology/University of Wisconsin/CHTC/CHTC-ITB.yaml index aa4d8d99a..e1c3f05a5 100644 --- a/topology/University of Wisconsin/CHTC/CHTC-ITB.yaml +++ b/topology/University of Wisconsin/CHTC/CHTC-ITB.yaml @@ -77,9 +77,6 @@ Resources: Secondary: ID: OSG1000003 Name: Brian Lin - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000002 @@ -125,35 +122,8 @@ Resources: Details: hidden: false - TIGER-OSG-BACKFILL: - Active: true - ContactLists: - Administrative Contact: - Primary: - ID: OSG1000003 - Name: Brian Lin - Secondary: - ID: OSG1000002 - Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist - Security Contact: - Primary: - ID: OSG1000003 - Name: Brian Lin - Secondary: - ID: OSG1000002 - Name: Matyas Selmeci - Description: OSG VO backfill containers on the Tiger cluster - FQDN: tiger-osg-backfill.osgdev.chtc.io - ID: 1128 - Services: - Execution Endpoint: - Description: OSG VO backfill containers on the Tiger cluster - CHTC-ITB-SLURM-CE: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -162,9 +132,6 @@ Resources: Secondary: ID: OSG1000003 Name: Brian Lin - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000002 @@ -214,9 +181,6 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000003 @@ -245,9 +209,6 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000003 @@ -262,12 +223,12 @@ Resources: Execution Endpoint: Description: OSG VO backfill container in the GPU lab - CHTC-ITB-HELM-ORIGIN1: + CHTC-ITB-HELM-ORIGIN: Active: false Description: >- This is a testing OSDF origin server on the Tiger cluster, - deployed via Helm. It serves public data. - ID: 1325 + deployed via Helm. It serves both public and protected data. + ID: 1370 ContactLists: Administrative Contact: Primary: @@ -283,60 +244,81 @@ Resources: Secondary: ID: OSG1000003 Name: Brian Lin - FQDN: helm-origin1.osgdev.chtc.io - DN: /CN=helm-origin1.osgdev.chtc.io + FQDN: helm-origin.osgdev.chtc.io + DN: /CN=helm-origin.osgdev.chtc.io Services: XRootD origin server: - Description: xrootd stash-origin server + Description: xrootd stash-origin and stash-origin-auth instances VOOwnership: OSG: 100 AllowedVOs: - - ANY_PUBLIC + - GLOW - CHTC-ITB-HELM-ORIGIN2: + CHTC-ITB-HELM-CACHE1: Active: false Description: >- - This is a testing OSDF origin server on the Tiger cluster, - deployed via Helm. It serves protected data. - ID: 1326 + This is a testing StashCache cache server the Tiger cluster, + deployed via Helm. + ID: 1339 ContactLists: Administrative Contact: Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: ID: OSG1000003 Name: Brian Lin + Tertiary: + ID: OSG1000002 + Name: Matyas Selmeci Security Contact: Primary: ID: OSG1000002 Name: Matyas Selmeci Secondary: - ID: OSG1000003 - Name: Brian Lin - FQDN: helm-origin2.osgdev.chtc.io - DN: /CN=helm-origin2.osgdev.chtc.io + ID: OSG1000015 + Name: Aaron Moate + FQDN: helm-cache1.osgdev.chtc.io + DN: /CN=helm-cache1.osgdev.chtc.io Services: - XRootD origin server: - Description: xrootd stash-origin-auth server + XRootD cache server: + Description: StashCache cache server VOOwnership: OSG: 100 AllowedVOs: - GLOW - OSG - CHTC-ITB-HELM-CACHE1: - Active: false - Description: >- - This is a testing StashCache cache server the Tiger cluster, - deployed via Helm. - ID: 1339 + TIGER-OSG-BACKFILL-ITB: + Active: true ContactLists: Administrative Contact: Primary: - ID: OSG1000007 - Name: Carl Edquist + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Security Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Description: OSG VO backfill containers on the Tiger cluster, serving the ITB pool + FQDN: tiger-osg-backfill-itb.osgdev.chtc.io + ID: 1382 + Services: + Execution Endpoint: + Description: OSG VO backfill containers on the Tiger cluster, serving the ITB pool + + CHTC-ITB-S3-AWS-EAST-ORIGIN: + Active: true + Description: >- + This is an origin used for demonstrating integration with AWS + East S3 buckets + ID: 1397 + ContactLists: + Administrative Contact: + Primary: ID: OSG1000003 Name: Brian Lin Tertiary: @@ -344,18 +326,53 @@ Resources: Name: Matyas Selmeci Security Contact: Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + FQDN: s3-us-east-1.osgdev.chtc.io + DN: /CN=s3-us-east-1.osgdev.chtc.io + Services: + XRootD origin server: + Description: Origin serving both authenticated and unauthenticated data + AllowedVOs: + - OSG + + CHTC-ITB-S3-AWS-WEST-ORIGIN: + Active: true + Description: >- + This is an origin used for demonstrating integration with AWS + West S3 buckets + ID: 1398 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: ID: OSG1000002 Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + Security Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin Secondary: - ID: OSG1000015 - Name: Aaron Moate - FQDN: helm-cache1.osgdev.chtc.io - DN: /CN=helm-cache1.osgdev.chtc.io + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + FQDN: s3-us-west-1.osgdev.chtc.io + DN: /CN=s3-us-west-1.osgdev.chtc.io Services: - XRootD cache server: - Description: StashCache cache server - VOOwnership: - OSG: 100 + XRootD origin server: + Description: Origin serving both authenticated and unauthenticated data AllowedVOs: - - GLOW - OSG diff --git a/topology/University of Wisconsin/CHTC/CHTC-OSDF.yaml b/topology/University of Wisconsin/CHTC/CHTC-OSDF.yaml new file mode 100644 index 000000000..68c2c960f --- /dev/null +++ b/topology/University of Wisconsin/CHTC/CHTC-OSDF.yaml @@ -0,0 +1,182 @@ +Production: true +SupportCenter: GLOW-TECH + +GroupDescription: These are the OSDF resources at CHTC + +GroupID: 1359 + +Resources: + CHTC_STASHCACHE_CACHE: + Active: true + Description: This is a StashCache cache server at UW. + ID: 958 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + Security Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + FQDN: sc-cache.chtc.wisc.edu + DN: /CN=sc-cache.chtc.wisc.edu + Services: + XRootD cache server: + Description: StashCache cache server + VOOwnership: + GLOW: 100 + AllowedVOs: + - ANY + + CHTC_TIGER_CACHE: + Active: true + Description: This is a StashCache cache server at UW running on the Tiger Kubernetes cluster. + ID: 1098 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + Security Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + FQDN: stash-cache.osg.chtc.io + DN: /CN=stash-cache.osg.chtc.io + Services: + XRootD cache server: + Description: StashCache cache server + VOOwnership: + GLOW: 100 + AllowedVOs: + - ANY + + CHTC_STASHCACHE_ORIGIN: + Active: true + Description: This is a StashCache origin server at UW. + ID: 959 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + Security Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + FQDN: sc-origin.chtc.wisc.edu + DN: /CN=sc-origin.chtc.wisc.edu + Services: + XRootD origin server: + Description: StashCache origin server + VOOwnership: + GLOW: 100 + AllowedVOs: + - ANY + + CHTC_STASHCACHE_ORIGIN_2000: + Active: true + Description: This is a StashCache origin server at UW. + ID: 1069 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + Security Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + FQDN: sc-origin2000.chtc.wisc.edu + DN: /CN=sc-origin2000.chtc.wisc.edu + Services: + XRootD origin server: + Description: StashCache origin server + VOOwnership: + GLOW: 100 + AllowedVOs: + - ANY + + CHTC_STASHCACHE_ORIGIN_AUTH_2000: + Active: true + Description: This is a StashCache origin server at UW. + ID: 1192 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + Security Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000015 + Name: Aaron Moate + FQDN: origin-auth2000.chtc.wisc.edu + FQDNAliases: + - origin-auth.chtc.wisc.edu + DN: /CN=origin-auth2000.chtc.wisc.edu + Services: + XRootD origin server: + Description: StashCache origin server, see OPS-198 + VOOwnership: + GLOW: 100 + AllowedVOs: + - ANY + + CHTC_NIH_ORIGIN: + Active: true + Description: This is an origin server serving NIH image analysis data + ID: 1454 + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000283 + Name: JUSTIN HIEMSTRA + Security Contact: + Primary: + ID: OSG1000002 + Name: Matyas Selmeci + Secondary: + ID: OSG1000283 + Name: JUSTIN HIEMSTRA + FQDN: nih-origin.osgdev.chtc.io + DN: /CN=nih-origin.osgdev.chtc.io + Services: + XRootD origin server: + Description: XRootD origin server serving files from an HTTP backend + AllowedVOs: + - ANY + diff --git a/topology/University of Wisconsin/CHTC/CHTC-OSDF_downtime.yaml b/topology/University of Wisconsin/CHTC/CHTC-OSDF_downtime.yaml new file mode 100644 index 000000000..19fba6a22 --- /dev/null +++ b/topology/University of Wisconsin/CHTC/CHTC-OSDF_downtime.yaml @@ -0,0 +1,100 @@ +- Class: UNSCHEDULED + ID: 563135631 + Description: forgot to update the CA certs + Severity: Severe + StartTime: Jun 01, 2020 10:00 +0000 + EndTime: Jun 04, 2020 15:00 +0000 + CreatedTime: Jun 04, 2020 18:32 +0000 + ResourceName: CHTC_STASHCACHE_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 627995778 + Description: cache is overloaded and I need to do some debugging + Severity: Intermittent Outage + StartTime: Aug 18, 2020 20:15 +0000 + EndTime: Aug 18, 2020 22:15 +0000 + CreatedTime: Aug 18, 2020 20:12 +0000 + ResourceName: CHTC_STASHCACHE_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 648491063 + Description: xrootd 4->5 upgrade + Severity: Intermittent Outage + StartTime: Sep 11, 2020 13:30 +0000 + EndTime: Sep 11, 2020 14:00 +0000 + CreatedTime: Sep 11, 2020 13:31 +0000 + ResourceName: CHTC_STASHCACHE_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1051193533 + Description: Tiger cluster maintenance + Severity: Outage + StartTime: Dec 21, 2021 08:00 +0000 + EndTime: Dec 22, 2021 23:00 +0000 + CreatedTime: Dec 21, 2021 20:42 +0000 + ResourceName: CHTC_TIGER_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1102102506 + Description: ImagePullBackoff + Severity: Outage + StartTime: Feb 17, 2022 21:30 +0000 + EndTime: Feb 24, 2022 23:00 +0000 + CreatedTime: Feb 18, 2022 18:50 +0000 + ResourceName: CHTC_TIGER_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1427149278 + Description: testing + Severity: Outage + StartTime: Mar 01, 2023 23:55 +0000 + EndTime: Mar 02, 2023 00:55 +0000 + CreatedTime: Mar 01, 2023 23:55 +0000 + ResourceName: CHTC_STASHCACHE_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1433823879 + Description: Networking issues on kubelet + Severity: Severe + StartTime: Mar 08, 2023 23:35 +0000 + EndTime: Mar 09, 2023 19:30 +0000 + CreatedTime: Mar 09, 2023 17:19 +0000 + ResourceName: CHTC_TIGER_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- + +- Class: UNSCHEDULED + ID: 1450289310 + Description: Debugging XrootD deadlock + Severity: Outage + StartTime: Mar 28, 2023 10:30 +0000 + EndTime: Apr 30, 2023 10:30 +0000 + CreatedTime: Mar 28, 2023 18:42 +0000 + ResourceName: CHTC_TIGER_CACHE + Services: + - XRootD cache server +# --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1481315892 + Description: host is down + Severity: Outage + StartTime: May 03, 2023 16:15 +0000 + EndTime: May 03, 2023 22:00 +0000 + CreatedTime: May 03, 2023 16:33 +0000 + ResourceName: CHTC_STASHCACHE_ORIGIN + Services: + - XRootD origin server +# --------------------------------------------------------- diff --git a/topology/University of Wisconsin/CHTC/CHTC-Spark.yaml b/topology/University of Wisconsin/CHTC/CHTC-Spark.yaml new file mode 100644 index 000000000..8a972322d --- /dev/null +++ b/topology/University of Wisconsin/CHTC/CHTC-Spark.yaml @@ -0,0 +1,139 @@ +# Production is true if the resources in this group will join the production OSG pool, +# and not the Integration Test Bed (ITB) pool. +Production: true +# SupportCenter is one of the support centers in topology/support-centers.yaml +SupportCenter: Self Supported + +# GroupDescription is a long description of the resource group; may be multiple lines. +GroupDescription: UW CHTC Spark Cluster + +# If you have an up-to-date local git clone, fill GroupID with the output from `bin/next_resource_group_id` +# Otherwise, leave it blank and we will fill in the appropriate value for you. +GroupID: 1352 + +# Resources contains one or more resources in this +# ResourceGroup. A resource provides one or more services +Resources: + # Resource Name should be a short descriptor of the resource. + # e.g. the Center for High Throughput Computing's GlideinWMS Frontend is "CHTC-glidein2" + # Resource Names need to be unique across all resources in the OSG. + CHTC-Spark-CE1: + # Active is true if the resource is accepting requests, and false otherwise. + # When first registering a resource, set this to false. Set it to true when it's ready for production. + Active: true + # Description is a long description of the resource; may be multiple lines + Description: Hosted CE serving CHTC Spark Cluster + # If you have an up-to-date local git clone, fill ID with the output from `bin/next_resource_id` + # Otherwise, leave it blank and we will fill in the appropriate value for you. + ID: 1436 + # ContactLists contain information about people to contact regarding this resource. + # The "ID" is a hash of their email address available at https://topology.opensciencegrid.org/miscuser/xml + # If you cannot find the contact above XML, please register the contact: + # https://opensciencegrid.org/docs/common/registration/#registering-contacts + ContactLists: + # Administrative Contacts are persons or groups of people (i.e., + # mailing lists) that are directly responsible for the + # maintenance of the resource + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Security Contact are persons or groups of people (i.e., + # mailing lists) that are responsible for handling security + # issues related to the resource + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # Site contact (optional) are persons or groups of people (i.e., + # mailing lists) that are generally responsible for a site's + # relationship with the OSG (e.g., principal investigators, + # local administrator contact for OSG Hosted CEs) + # Site Contact: + # Primary: + # Name: + # ID: + # Secondary: + # Name: + # ID: + # Tertiary: + # Name: + # ID: + + # FQDN is the fully qualified domain name of the host running this resource + FQDN: chtc-spark-ce1.svc.opensciencegrid.org + ### FQDNAliases (optional) are any other DNS aliases by which this host can be accessed + # FQDNAliases: + # - + # - + + ### DN (optional except for XCache resources) is the DN of the host cert of the resource + # in OpenSSL 1.0 format (i.e. /DC=org/DC=incommon/C=US/...) + # DN: + + # Services is one or more services provided by this resource; + # valid services are listed in topology/services.yaml with the format ": " + Services: + CE: + # Description is a brief description of the service + Description: Hosted CE + ### Details (optional) + # Details: + # # hidden + # hidden: false + # ### uri_override (optional, use if your service is on some non-standard URL) + # # uri_override: : + # ### sam_uri (optional) + # # sam_uri: htcondor://... + # ### endpoint (for perfSONAR services) + # # endpoint: + + # Other services if you have any + # : + # ... + + ### Tags (optional) is a list of tags associated with the resource. + ### Include the tag "CC*" if applicable for a CC* CE. + # Tags: + # - + # - + + ### VOOwnership (optional) is the percentage of the resource owned by one or more VOs. + ### If part of the resource is not owned by the VO, do not list it. + ### The total percentage cannot exceed 100. + # VOOwnership: + # : + # : + + ### WLCGInformation (optional) is only for resources that are part of the WLCG + # WLCGInformation: + # APELNormalFactor: 0.0 + # HEPScore23Percentage: 0.0 + # AccountingName: + # HEPSPEC: 0 + # InteropAccounting: true + # InteropBDII: true + # InteropMonitoring: true + # KSI2KMax: 0 + # KSI2KMin: 0 + # StorageCapacityMax: 0 + # StorageCapacityMin: 0 + # TapeCapacity: 0 + + # Other resources if you have any... + # : + # ... diff --git a/topology/University of Wisconsin/CHTC/CHTC.yaml b/topology/University of Wisconsin/CHTC/CHTC.yaml index c5a2cbc55..3bbaa3678 100644 --- a/topology/University of Wisconsin/CHTC/CHTC.yaml +++ b/topology/University of Wisconsin/CHTC/CHTC.yaml @@ -63,6 +63,8 @@ Resources: Description: OSG Submission Node Details: hidden: false + Tags: + - OSPool VOOwnership: GLOW: 100 CHTC-submit2: @@ -84,6 +86,8 @@ Resources: Description: OSG Submission Node Details: hidden: false + Tags: + - OSPool VOOwnership: GLOW: 100 @@ -106,6 +110,8 @@ Resources: Description: OSG Submission Node Details: hidden: false + Tags: + - OSPool VOOwnership: GLOW: 100 @@ -175,122 +181,6 @@ Resources: VOOwnership: GLOW: 100 - CHTC_STASHCACHE_CACHE: - Active: false - Description: This is a StashCache cache server at UW. - ID: 958 - ContactLists: - Administrative Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - Security Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - FQDN: sc-cache.chtc.wisc.edu - DN: /CN=sc-cache.chtc.wisc.edu - Services: - XRootD cache server: - Description: StashCache cache server - VOOwnership: - GLOW: 100 - AllowedVOs: - - ANY - - CHTC_TIGER_CACHE: - Active: true - Description: This is a StashCache cache server at UW running on the Tiger Kubernetes cluster. - ID: 1098 - ContactLists: - Administrative Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - Security Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - FQDN: stash-cache.osg.chtc.io - DN: /CN=stash-cache.osg.chtc.io - Services: - XRootD cache server: - Description: StashCache cache server - VOOwnership: - GLOW: 100 - AllowedVOs: - - ANY - - CHTC_STASHCACHE_ORIGIN: - Active: true - Description: This is a StashCache origin server at UW. - ID: 959 - ContactLists: - Administrative Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - Security Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - FQDN: sc-origin.chtc.wisc.edu - DN: /CN=sc-origin.chtc.wisc.edu - Services: - XRootD origin server: - Description: StashCache origin server - VOOwnership: - GLOW: 100 - AllowedVOs: - - ANY - - CHTC_STASHCACHE_ORIGIN_2000: - Active: true - Description: This is a StashCache origin server at UW. - ID: 1069 - ContactLists: - Administrative Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - Security Contact: - Primary: - ID: OSG1000002 - Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - FQDN: sc-origin2000.chtc.wisc.edu - DN: /CN=sc-origin2000.chtc.wisc.edu - Services: - XRootD origin server: - Description: StashCache origin server - VOOwnership: - GLOW: 100 - AllowedVOs: - - ANY - CHTC_SQUID_CS_3370: Active: true Description: Squid service located at Computer Sciences 3370a @@ -430,7 +320,7 @@ Resources: FQDN: xd-submit0000.chtc.wisc.edu FQDNAliases: - xd-submit.chtc.wisc.edu - ID: 1125 + ID: 1396 Services: Submit Node: Description: OSG Submission Node for XD project @@ -449,9 +339,6 @@ Resources: Secondary: ID: OSG1000003 Name: Brian Lin - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000002 @@ -547,39 +434,32 @@ Resources: Details: hidden: false - CHTC_STASHCACHE_ORIGIN_AUTH_2000: + TIGER-OSG-BACKFILL-PROD: Active: true - Description: This is a StashCache origin server at UW. - ID: 1192 ContactLists: Administrative Contact: Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: ID: OSG1000002 Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate Security Contact: Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: ID: OSG1000002 Name: Matyas Selmeci - Secondary: - ID: OSG1000015 - Name: Aaron Moate - FQDN: origin-auth2000.chtc.wisc.edu - FQDNAliases: - - origin-auth.chtc.wisc.edu - DN: /CN=origin-auth2000.chtc.wisc.edu + Description: OSG VO backfill containers on the Tiger cluster, in the production namespace + FQDN: tiger-osg-backfill.osg.chtc.io + ID: 1193 Services: - XRootD origin server: - Description: StashCache origin server, see OPS-198 - VOOwnership: - GLOW: 100 - AllowedVOs: - - ANY + Execution Endpoint: + Description: OSG VO backfill containers on the Tiger cluster, in the production namespace - TIGER-OSG-BACKFILL-PROD: - Active: true + TIGER-OSG-BACKFILL: + Active: false ContactLists: Administrative Contact: Primary: @@ -588,9 +468,6 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000003 @@ -598,15 +475,15 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Description: OSG VO backfill containers on the Tiger cluster, in the production namespace - FQDN: tiger-osg-backfill.osg.chtc.io - ID: 1193 + Description: OSG VO backfill containers on the Tiger cluster + FQDN: tiger-osg-backfill.osgdev.chtc.io + ID: 1128 Services: Execution Endpoint: - Description: OSG VO backfill containers on the Tiger cluster, in the production namespace + Description: OSG VO backfill containers on the Tiger cluster CHTC-ap7: - Active: true + Active: false Description: The ap7.chtc.wisc.edu login node for the OSG Open Pool ID: 1303 ContactLists: @@ -631,6 +508,71 @@ Resources: VOOwnership: GLOW: 100 + CHTC-ap40: + Active: true + Description: The ap40.uw.osg-htc.org access point for the Open Science Pool + ID: 1468 + ContactLists: + Administrative Contact: + Primary: + Name: Aaron Moate + ID: OSG1000015 + Security Contact: + Primary: + Name: Aaron Moate + ID: OSG1000015 + FQDN: ap40.chtc.wisc.edu + FQDNAliases: + - ap2007.chtc.wisc.edu + - ospool-ap2040.chtc.wisc.edu + Services: + Submit Node: + Description: OS Pool access point + Details: + hidden: false + Tags: + - OSPool + VOOwnership: + OSG: 100 + + CHTC-ospool-eht: + Active: true + Description: The CHTC hosted EHT Gateway to the OSPool + ID: 1467 + ContactLists: + Administrative Contact: + Primary: + Name: Brian Lin + ID: OSG1000003 + Secondary: + Name: Matyas Selmeci + ID: OSG1000002 + Tertiary: + Name: Joe Bartkowiak + ID: OSG1000141 + Security Contact: + Primary: + Name: Brian Lin + ID: OSG1000003 + Secondary: + Name: Matyas Selmeci + ID: OSG1000002 + Tertiary: + Name: Joe Bartkowiak + ID: OSG1000141 + FQDN: ospool-eht.chtc.wisc.edu + FQDNAliases: + - ospool-eht2000.chtc.wisc.edu + Services: + Submit Node: + Description: OS Pool access point + Details: + hidden: false + Tags: + - OSPool + VOOwnership: + GLOW: 100 + CHTC-htcss-dev-ap: Active: true Description: OSPool AP used by the HTCSS dev team @@ -643,9 +585,6 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: Name: Brian Lin diff --git a/topology/University of Wisconsin/CHTC/CHTC_OSPOOL.yaml b/topology/University of Wisconsin/CHTC/CHTC_OSPOOL.yaml index 31be7233f..732dd235c 100644 --- a/topology/University of Wisconsin/CHTC/CHTC_OSPOOL.yaml +++ b/topology/University of Wisconsin/CHTC/CHTC_OSPOOL.yaml @@ -5,7 +5,7 @@ GroupID: 1125 Resources: CHTC_OSPOOL_ORIGIN: - Active: false + Active: true Description: Authenticated origin server for OSPool Users at UW-Madison ID: 1194 ContactLists: @@ -44,9 +44,6 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000003 @@ -74,9 +71,6 @@ Resources: Secondary: ID: OSG1000002 Name: Matyas Selmeci - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000003 @@ -86,9 +80,35 @@ Resources: Name: Matyas Selmeci Description: OSPool GPU A100 for EHT FQDN: gpu-ep.chtc.wisc.edu - ID: 1325 + ID: 1371 Services: Execution Endpoint: Description: OSG VO backfill containers on the Tiger cluster, in the production namespace Tags: - OSPool + + CHTC-ITB-GPU-EP: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Security Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Description: ITB GPU A100 for testing + FQDN: itb-gpu-ep.osgdev.chtc.io + ID: 1410 + Services: + Execution Endpoint: + Description: OSG VO backfill containers on the Tiger cluster, in the development namespace + Tags: + - OSPool diff --git a/topology/University of Wisconsin/CHTC/CHTC_downtime.yaml b/topology/University of Wisconsin/CHTC/CHTC_downtime.yaml index 0ef780e8e..5b4b95522 100644 --- a/topology/University of Wisconsin/CHTC/CHTC_downtime.yaml +++ b/topology/University of Wisconsin/CHTC/CHTC_downtime.yaml @@ -1,36 +1,3 @@ -- Class: UNSCHEDULED - ID: 563135631 - Description: forgot to update the CA certs - Severity: Severe - StartTime: Jun 01, 2020 10:00 +0000 - EndTime: Jun 04, 2020 15:00 +0000 - CreatedTime: Jun 04, 2020 18:32 +0000 - ResourceName: CHTC_STASHCACHE_CACHE - Services: - - XRootD cache server -# --------------------------------------------------------- -- Class: UNSCHEDULED - ID: 627995778 - Description: cache is overloaded and I need to do some debugging - Severity: Intermittent Outage - StartTime: Aug 18, 2020 20:15 +0000 - EndTime: Aug 18, 2020 22:15 +0000 - CreatedTime: Aug 18, 2020 20:12 +0000 - ResourceName: CHTC_STASHCACHE_CACHE - Services: - - XRootD cache server -# --------------------------------------------------------- -- Class: UNSCHEDULED - ID: 648491063 - Description: xrootd 4->5 upgrade - Severity: Intermittent Outage - StartTime: Sep 11, 2020 13:30 +0000 - EndTime: Sep 11, 2020 14:00 +0000 - CreatedTime: Sep 11, 2020 13:31 +0000 - ResourceName: CHTC_STASHCACHE_CACHE - Services: - - XRootD cache server -# --------------------------------------------------------- - Class: UNSCHEDULED ID: 961126261 Description: bringing this down until we can figure out cluster disk usage issue @@ -53,28 +20,6 @@ Services: - CE # --------------------------------------------------------- -- Class: UNSCHEDULED - ID: 1051193533 - Description: Tiger cluster maintenance - Severity: Outage - StartTime: Dec 21, 2021 08:00 +0000 - EndTime: Dec 22, 2021 23:00 +0000 - CreatedTime: Dec 21, 2021 20:42 +0000 - ResourceName: CHTC_TIGER_CACHE - Services: - - XRootD cache server -# --------------------------------------------------------- -- Class: UNSCHEDULED - ID: 1102102506 - Description: ImagePullBackoff - Severity: Outage - StartTime: Feb 17, 2022 21:30 +0000 - EndTime: Feb 24, 2022 23:00 +0000 - CreatedTime: Feb 18, 2022 18:50 +0000 - ResourceName: CHTC_TIGER_CACHE - Services: - - XRootD cache server -# --------------------------------------------------------- - Class: SCHEDULED ID: 1172966228 Description: SLURM upgrade @@ -86,3 +31,14 @@ Services: - CE # --------------------------------------------------------- +- Class: UNSCHEDULED + ID: 1421785006 + Description: Auth issues at the site + Severity: Outage + StartTime: Feb 23, 2023 18:54 +0000 + EndTime: Mar 10, 2023 15:00 +0000 + CreatedTime: Feb 23, 2023 18:55 +0000 + ResourceName: CHTC-canary2 + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/University of Wisconsin/CHTC/PATh_facility.yaml b/topology/University of Wisconsin/CHTC/PATh_facility.yaml index a0a6e8309..70853da13 100644 --- a/topology/University of Wisconsin/CHTC/PATh_facility.yaml +++ b/topology/University of Wisconsin/CHTC/PATh_facility.yaml @@ -5,7 +5,7 @@ GroupID: 1144 Resources: CHTC-submit6: - Active: true + Active: false ContactLists: Administrative Contact: Primary: @@ -26,3 +26,60 @@ Resources: VOOwnership: GLOW: 100 + CHTC-PATH-ORIGIN: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + Security Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + FQDN: ap1-origin.facility.path-cc.io + DN: /CN=path-origin.facility.path-cc.io + ID: 1409 + Services: + XRootD origin server: + Description: OSDF origin server + AllowedVOs: + - PATh + + CHTC-PATH-AP1: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Secondary: + ID: OSG1000003 + Name: Brian Lin + Security Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Secondary: + ID: OSG1000003 + Name: Brian Lin + Description: PATh Facility AP (originally OSPool submit node, see OPS-198) + FQDN: ap1.facility.path-cc.io + ID: 1421 + Services: + Submit Node: + Description: PATh Facility AP (originally OSPool submit node, see OPS-198) + Details: + hidden: false diff --git a/topology/University of Wisconsin/CHTC/PATh_facility_ITB.yaml b/topology/University of Wisconsin/CHTC/PATh_facility_ITB.yaml new file mode 100644 index 000000000..0c9868ffd --- /dev/null +++ b/topology/University of Wisconsin/CHTC/PATh_facility_ITB.yaml @@ -0,0 +1,38 @@ +--- +Production: false +SupportCenter: Self Supported +GroupDescription: PATh facility development resources located at CHTC. +GroupID: 1363 + +Resources: + CHTC-ITB-PATH-ORIGIN: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + Security Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + FQDN: path-origin.osgdev.chtc.io + DN: /CN=path-origin.osgdev.chtc.io + ID: 1466 + Services: + XRootD origin server: + Description: OSDF origin server + AllowedVOs: + - PATh diff --git a/topology/University of Wisconsin/FIU-PATH/FIU-PATH.yaml b/topology/University of Wisconsin/FIU-PATH/FIU-PATH.yaml index 4dc8316e9..93e96858c 100644 --- a/topology/University of Wisconsin/FIU-PATH/FIU-PATH.yaml +++ b/topology/University of Wisconsin/FIU-PATH/FIU-PATH.yaml @@ -17,9 +17,6 @@ Resources: Tertiary: ID: OSG1000001 Name: Brian Bockelman - Tertiary 2: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000015 @@ -30,3 +27,48 @@ Resources: Services: Execution Endpoint: Description: Backfill containers running in the osg production namespace. + + FIU-PATH-IDPL-EP: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000192 + Name: Gregory Thain + Security Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Description: EP running in the FIU PATh Facility for IDPL testing + FQDN: fiu-path-idpl-ep.facility.path-cc.io + ID: 1464 + Services: + Execution Endpoint: + Description: EP running in the FIU PATh Facility for IDPL testing + + FIU_OSDF_CACHE: + Active: false + Description: FIU IPv6 OSDF cache + ID: 1403 + ContactLists: + Administrative Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + Security Contact: + Primary: + Name: Fabio Andrijauskas + ID: OSG1000162 + FQDN: fiu-cache.nationalresearchplatform.org + DN: /DC=org/DC=incommon/C=US/ST=California/O=University of California, San Diego/CN=fiu-cache.nationalresearchplatform.org + Services: + XRootD cache server: + Description: FIU IPv6 OSDF cache + AllowedVOs: + - ANY diff --git a/topology/University of Wisconsin/GLOW ATLAS/WISC-ATLAS.yaml b/topology/University of Wisconsin/GLOW ATLAS/WISC-ATLAS.yaml index b5345c499..d21865a04 100644 --- a/topology/University of Wisconsin/GLOW ATLAS/WISC-ATLAS.yaml +++ b/topology/University of Wisconsin/GLOW ATLAS/WISC-ATLAS.yaml @@ -24,61 +24,6 @@ Resources: uri_override: higgs08.cs.wisc.edu:2119 VOOwnership: ATLAS: 100 - WISC-ATLAS-SE: - Active: true - ContactLists: - Administrative Contact: - Primary: - ID: fd974ec83adf9407641e846dcb78308bda532b35 - Name: Wen Guan - Security Contact: - Primary: - ID: fd974ec83adf9407641e846dcb78308bda532b35 - Name: Wen Guan - Description: new dcache SE service - FQDN: atlas07.chtc.wisc.edu - ID: 342 - Services: - SRMv2: - Description: SRM V2 Storage Element - Details: - hidden: false - uri_override: atlas07.chtc.wisc.edu:8443 - VOOwnership: - ATLAS: 100 - WLCGInformation: - APELNormalFactor: 0 - HEPSPEC: 612 - InteropAccounting: false - InteropBDII: true - InteropMonitoring: true - KSI2KMax: 1625 - KSI2KMin: 1300 - StorageCapacityMax: 320 - StorageCapacityMin: 300 - TapeCapacity: 1 - WISC-ATLAS-SE1: - Active: true - ContactLists: - Administrative Contact: - Primary: - ID: fd974ec83adf9407641e846dcb78308bda532b35 - Name: Wen Guan - Security Contact: - Primary: - ID: fd974ec83adf9407641e846dcb78308bda532b35 - Name: Wen Guan - Description: A new SRM service which will be used for production - FQDN: c140.chtc.wisc.edu - ID: 629 - Services: - SRMv2: - Description: SRM V2 Storage Element - Details: - hidden: false - uri_override: c140.chtc.wisc.edu:8443 - VOOwnership: - ATLAS: 100 WISC-ATLAS-SUBMIT1: Active: true ContactLists: diff --git a/topology/University of Wisconsin/GLOW EDU/VDT-ITB.yaml b/topology/University of Wisconsin/GLOW EDU/VDT-ITB.yaml index 6fbcd8a38..08aa072d3 100644 --- a/topology/University of Wisconsin/GLOW EDU/VDT-ITB.yaml +++ b/topology/University of Wisconsin/GLOW EDU/VDT-ITB.yaml @@ -12,9 +12,6 @@ Resources: Secondary: ID: 19511ac08de9fbb51709a05a707decfe36de286f Name: Tim Cartwright - Tertiary: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000002 diff --git a/topology/University of Wisconsin/GLOW/GLOW.yaml b/topology/University of Wisconsin/GLOW/GLOW.yaml index 237d41504..e6f723fa8 100644 --- a/topology/University of Wisconsin/GLOW/GLOW.yaml +++ b/topology/University of Wisconsin/GLOW/GLOW.yaml @@ -261,7 +261,7 @@ Resources: Name: Carl Vuosalo Description: Squid Server for cvmfs FQDN: cvmfscache04.hep.wisc.edu - ID: 974 + ID: 1342 Services: Squid: Description: Generic squid service diff --git a/topology/University of Wisconsin/GLOW/GLOW_downtime.yaml b/topology/University of Wisconsin/GLOW/GLOW_downtime.yaml index 4601799b4..0a78852df 100644 --- a/topology/University of Wisconsin/GLOW/GLOW_downtime.yaml +++ b/topology/University of Wisconsin/GLOW/GLOW_downtime.yaml @@ -3006,4 +3006,58 @@ Services: - net.perfSONAR.Latency # --------------------------------------------------------- - +- Class: SCHEDULED + ID: 1319973971 + Description: Updating to OSG 3.6 + Severity: Severe + StartTime: Oct 31, 2022 16:00 +0000 + EndTime: Oct 31, 2022 22:00 +0000 + CreatedTime: Oct 28, 2022 22:49 +0000 + ResourceName: GLOW-OSG + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1322473108 + Description: Updating to OSG 3.6 + Severity: Intermittent Outage + StartTime: Nov 01, 2022 20:30 +0000 + EndTime: Nov 02, 2022 22:00 +0000 + CreatedTime: Oct 31, 2022 20:15 +0000 + ResourceName: GLOW-OSG + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1324905254 + Description: Updating to OSG 3.6 + Severity: Intermittent Outage + StartTime: Nov 04, 2022 16:00 +0000 + EndTime: Nov 04, 2022 21:00 +0000 + CreatedTime: Nov 03, 2022 15:48 +0000 + ResourceName: GLOW-CONDOR-CE + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1328450191 + Description: Updating to OSG 3.6 + Severity: Intermittent Outage + StartTime: Nov 08, 2022 19:00 +0000 + EndTime: Nov 08, 2022 23:00 +0000 + CreatedTime: Nov 07, 2022 18:16 +0000 + ResourceName: GLOW + Services: + - CE +# --------------------------------------------------------- +- Class: SCHEDULED + ID: 1329428399 + Description: Updating to OSG 3.6 + Severity: Intermittent Outage + StartTime: Nov 09, 2022 21:30 +0000 + EndTime: Nov 10, 2022 00:00 +0000 + CreatedTime: Nov 08, 2022 21:27 +0000 + ResourceName: GLOW-CMS + Services: + - CE +# --------------------------------------------------------- diff --git a/topology/University of Wisconsin/SYRA-PATH/SITE.yaml b/topology/University of Wisconsin/SYRA-PATH/SITE.yaml new file mode 100644 index 000000000..5f37485c9 --- /dev/null +++ b/topology/University of Wisconsin/SYRA-PATH/SITE.yaml @@ -0,0 +1,14 @@ +LongName: PATh Resources at Syracuse +Description: >- + Resources owned by the PATh project located at Syracuse University. + +ID: 10346 + +AddressLine1: 900 South Crouse Ave +City: Syracuse +Country: United States +State: New Yorkk +Zipcode: '13244' + +Latitude: 43.0391534 +Longitude: -76.1373045 diff --git a/topology/University of Wisconsin/SYRA-PATH/SYRA-PATH.yaml b/topology/University of Wisconsin/SYRA-PATH/SYRA-PATH.yaml new file mode 100644 index 000000000..ca924c8df --- /dev/null +++ b/topology/University of Wisconsin/SYRA-PATH/SYRA-PATH.yaml @@ -0,0 +1,29 @@ +Production: true +SupportCenter: Self Supported +GroupDescription: PATh facility resources located at Syracuse +GroupID: 1329 + +Resources: + SYRA-PATH-EP: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + Security Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Description: PATh facility EP located at Syracuse. + FQDN: syra-svc-1.facility.path-cc.io + ID: 1385 + Services: + Execution Endpoint: + Description: Backfill containers running in the PATh facility diff --git a/topology/University of Wisconsin/UNL-PATH/UNL-PATH.yaml b/topology/University of Wisconsin/UNL-PATH/UNL-PATH.yaml index 3c941f0e1..9c76b0e19 100644 --- a/topology/University of Wisconsin/UNL-PATH/UNL-PATH.yaml +++ b/topology/University of Wisconsin/UNL-PATH/UNL-PATH.yaml @@ -17,16 +17,13 @@ Resources: Tertiary: ID: OSG1000001 Name: Brian Bockelman - Tertiary 2: - ID: OSG1000007 - Name: Carl Edquist Security Contact: Primary: ID: OSG1000015 Name: Aaron Moate Description: PATh facility EP located at UNL. FQDN: unl-svc-1.facility.path-cc.io - ID: 1295 + ID: 1366 Services: Execution Endpoint: Description: Backfill containers running in the PATh facility diff --git a/topology/University of Wisconsin/WIPAC/IceCube.yaml b/topology/University of Wisconsin/WIPAC/IceCube.yaml index 0cadc4a2c..646a1b7d4 100644 --- a/topology/University of Wisconsin/WIPAC/IceCube.yaml +++ b/topology/University of Wisconsin/WIPAC/IceCube.yaml @@ -111,7 +111,7 @@ Resources: Name: Vladimir Brik Description: This is a test submit node for the IceCube collaboration. FQDN: sub-grid-test.icecube.wisc.edu - ID: 1319 + ID: 1369 Services: Submit Node: Description: OSG Submission Node diff --git a/topology/University of Wisconsin/WISC-PATH/WISC-PATH-DEV.yaml b/topology/University of Wisconsin/WISC-PATH/WISC-PATH-DEV.yaml new file mode 100644 index 000000000..b219ac8f3 --- /dev/null +++ b/topology/University of Wisconsin/WISC-PATH/WISC-PATH-DEV.yaml @@ -0,0 +1,29 @@ +Production: false +SupportCenter: Self Supported +GroupDescription: Development PATh facility resources located at UW-Madison +GroupID: 1362 + +Resources: + WISC-PATH-DEV-EP: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000001 + Name: Brian Bockelman + Security Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Description: PATh Facility EP located at UW-Madison in the development PATh pool + FQDN: wisc-path-dev-ep.facility.path-cc.io + ID: 1465 + Services: + Execution Endpoint: + Description: PATh Facility EP located at UW-Madison in the development PATh pool diff --git a/topology/University of Wisconsin/WISC-PATH/WISC-PATH.yaml b/topology/University of Wisconsin/WISC-PATH/WISC-PATH.yaml index 7ac4b295d..9f37f3f4c 100644 --- a/topology/University of Wisconsin/WISC-PATH/WISC-PATH.yaml +++ b/topology/University of Wisconsin/WISC-PATH/WISC-PATH.yaml @@ -1,7 +1,7 @@ Production: true SupportCenter: Self Supported GroupDescription: PATh facility resources located at UW-Madison -GroupID: 1297 +GroupID: 1326 Resources: WISC-PATH-EP: @@ -17,16 +17,37 @@ Resources: Tertiary: ID: 66ee5cfb622a7343dac85dee42815d1f4fbc2d85 Name: Brian Bockelman - Tertiary 2: - ID: 606b797dcc03cad7135b7cc61b78fbc15eea7ec8 - Name: Carl Edquist Security Contact: Primary: ID: 46a55ac4815b2b8c00ff283549f413113b45d628 Name: Aaron Moate Description: PATh facility EP located at UW-Madison FQDN: wisc-svc-1.facility.path-cc.io - ID: 1302 + ID: 1368 Services: Execution Endpoint: Description: Backfill containers running in the PATh facility + + WISC-PATH-IDPL-EP: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: OSG1000003 + Name: Brian Lin + Secondary: + ID: OSG1000002 + Name: Matyas Selmeci + Tertiary: + ID: OSG1000192 + Name: Gregory Thain + Security Contact: + Primary: + ID: OSG1000015 + Name: Aaron Moate + Description: EP running in the Wisconsin PATh Facility for IDPL testing + FQDN: wisc-path-idpl-ep.facility.path-cc.io + ID: 1463 + Services: + Execution Endpoint: + Description: EP running in the Wisconsin PATh Facility for IDPL testing diff --git a/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt.yaml b/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt.yaml index 37ecd11b0..f8132f8a9 100644 --- a/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt.yaml +++ b/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt.yaml @@ -389,7 +389,7 @@ Resources: Name: Paul Sheldon Description: SE attached to Vanderbilt resource group FQDN: se1.accre.vanderbilt.edu - ID: 241 + ID: 1375 Services: SRMv2: Description: SRM V2 Storage Element @@ -477,4 +477,39 @@ Resources: Description: Generic squid service VOOwnership: CMS: 100 + Vanderbilt_Xrootd: + Active: true + ContactLists: + Administrative Contact: + Primary: + ID: 11107327543306be8c340cfa2281444a2d428318 + Name: Andrew Malone Melo + Secondary: + ID: 22ae3f93d335f46cea9be2f7c9e0551f31df44bf + Name: Eric Appelt + Tertiary: + ID: dc620971c7c33ae6874f3691d41b5cd156ce0c63 + Name: Paul Sheldon + Tertiary 2: + ID: d6f67b5c1dade02a5b2d3ca88853171f16ed322a + Name: Lihan Liu + Tertiary 3: + ID: 6f5044c6ceabacd6b8a1c3a8ffc318ee844bb97b + Name: Shengquan Tuo + Security Contact: + Primary: + ID: 11107327543306be8c340cfa2281444a2d428318 + Name: Andrew Malone Melo + Secondary: + ID: 22ae3f93d335f46cea9be2f7c9e0551f31df44bf + Name: Eric Appelt + Description: Xrootd Redirector + FQDN: xrootd-vanderbilt.sites.opensciencegrid.org + ID: 1402 + Services: + XRootD component: + Description: Xrootd Redirector + VOOwnership: + CMS: 100 + SupportCenter: USCMS_Tier2 diff --git a/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt_downtime.yaml b/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt_downtime.yaml index e49b390bb..31ac73b45 100644 --- a/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt_downtime.yaml +++ b/topology/Vanderbilt University/Vanderbilt ACCRE/Vanderbilt_downtime.yaml @@ -501,3 +501,126 @@ ResourceName: Vanderbilt_CE6 Services: - CE +# ---------------------------------------------------------- +- Class: SCHEDULED + ID: 997651583 + Description: Operating System Updates and Network Reconfiguration + Severity: Outage + StartTime: Jan 10, 2023 05:00 +0000 + EndTime: Jan 13, 2023 05:00 +0000 + CreatedTime: Jan 05, 2023 23:00 +0000 + ResourceName: Vanderbilt_Gridftp + Services: + - GridFtp +- Class: SCHEDULED + ID: 997651584 + Description: Operating System Updates and Network Reconfiguration + Severity: Outage + StartTime: Jan 10, 2023 05:00 +0000 + EndTime: Jan 13, 2023 05:00 +0000 + CreatedTime: Jan 05, 2023 23:00 +0000 + ResourceName: Vanderbilt_CE5 + Services: + - CE +- Class: SCHEDULED + ID: 997651585 + Description: Operating System Updates and Network Reconfiguration + Severity: Outage + StartTime: Jan 10, 2023 05:00 +0000 + EndTime: Jan 13, 2023 05:00 +0000 + CreatedTime: Jan 05, 2023 23:00 +0000 + ResourceName: Vanderbilt_CE6 + Services: + - CE +- Class: SCHEDULED + ID: 997651586 + Description: Operating System Updates and Network Reconfiguration + Severity: Outage + StartTime: Jan 10, 2023 05:00 +0000 + EndTime: Jan 13, 2023 05:00 +0000 + CreatedTime: Jan 05, 2023 23:00 +0000 + ResourceName: Vanderbilt_Xrootd + Services: + - XRootD component +# ---------------------------------------------------------- +- Class: SCHEDULED + ID: 997651589 + Description: Cert upgrade + Severity: Outage + StartTime: Feb 18, 2023 05:00 +0000 + EndTime: Feb 22, 2023 05:00 +0000 + CreatedTime: Feb 16, 2023 23:00 +0000 + ResourceName: Vanderbilt_Gridftp + Services: + - GridFtp +- Class: SCHEDULED + ID: 997651590 + Description: Cert upgrade + Severity: Outage + StartTime: Feb 18, 2023 05:00 +0000 + EndTime: Feb 22, 2023 05:00 +0000 + CreatedTime: Feb 16, 2023 23:00 +0000 + ResourceName: Vanderbilt_CE5 + Services: + - CE +- Class: SCHEDULED + ID: 997651591 + Description: Cert upgrade + Severity: Outage + StartTime: Feb 18, 2023 05:00 +0000 + EndTime: Feb 22, 2023 05:00 +0000 + CreatedTime: Feb 16, 2023 23:00 +0000 + ResourceName: Vanderbilt_CE6 + Services: + - CE +- Class: SCHEDULED + ID: 997651592 + Description: Cert upgrade + Severity: Outage + StartTime: Feb 18, 2023 05:00 +0000 + EndTime: Feb 22, 2023 05:00 +0000 + CreatedTime: Feb 16, 2023 23:00 +0000 + ResourceName: Vanderbilt_Xrootd + Services: + - XRootD component +# ---------------------------------------------------------- +- Class: SCHEDULED + ID: 1559162037 + Description: Network upgrades + Severity: Outage + StartTime: Aug 8, 2023 05:00 +0000 + EndTime: Aug 11, 2023 05:00 +0000 + CreatedTime: Aug 3, 2023 02:00 +0000 + ResourceName: Vanderbilt_Gridftp + Services: + - GridFtp +- Class: SCHEDULED + ID: 1559162038 + Description: Network upgrades + Severity: Outage + StartTime: Aug 8, 2023 05:00 +0000 + EndTime: Aug 11, 2023 05:00 +0000 + CreatedTime: Aug 3, 2023 02:00 +0000 + ResourceName: Vanderbilt_CE5 + Services: + - CE +- Class: SCHEDULED + ID: 1559162039 + Description: Network upgrades + Severity: Outage + StartTime: Aug 8, 2023 05:00 +0000 + EndTime: Aug 11, 2023 05:00 +0000 + CreatedTime: Aug 3, 2023 02:00 +0000 + ResourceName: Vanderbilt_CE6 + Services: + - CE +- Class: SCHEDULED + ID: 1559162040 + Description: Network upgrades + Severity: Outage + StartTime: Aug 8, 2023 05:00 +0000 + EndTime: Aug 11, 2023 05:00 +0000 + CreatedTime: Aug 3, 2023 02:00 +0000 + ResourceName: Vanderbilt_Xrootd + Services: + - XRootD component diff --git a/topology/Wayne State University/WSU - GRID_ce2/GRID_ce2.yaml b/topology/Wayne State University/WSU - GRID_ce2/GRID_ce2.yaml index 6a02dadc4..a6d979ea1 100644 --- a/topology/Wayne State University/WSU - GRID_ce2/GRID_ce2.yaml +++ b/topology/Wayne State University/WSU - GRID_ce2/GRID_ce2.yaml @@ -35,6 +35,31 @@ Resources: hidden: false Tags: - CC* + WSU-GRID-CE1: + Active: true + ID: 1352 + Description: Hosted CE serving WSU-GRID + ContactLists: + Administrative Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Security Contact: + Primary: + Name: Jeffrey Michael Dost + ID: 3a8eb6436a8b78ca50f7e93bb2a4d1f0141212ba + Site Contact: + Primary: + ID: f84214412f7b3dbf848808c4ba30d179c5743766 + Name: Michael Thompson + FQDN: wsu-grid-ce1.svc.opensciencegrid.org + Services: + CE: + Description: WSU-GRID Hosted CE + Details: + hidden: false + Tags: + - CC* WSU - GRID_ce2: Active: false ID: 1036 diff --git a/virtual-organizations/AIOnEdge.yaml b/virtual-organizations/AIOnEdge.yaml new file mode 100644 index 000000000..34973af20 --- /dev/null +++ b/virtual-organizations/AIOnEdge.yaml @@ -0,0 +1,33 @@ +Active: True +AppDescription: Explore approaches of implementing OnEdge Real-Time AI-based algorithms + in identifying particle interaction in liquid Argon using GPU, FPGA or low-power + edge computing devices in the Warm Electronics Interface Boards (WIB) data stream. +CertificateOnly: false +Community: High energy particle physicists involved in the collaborating experiments + for AIOnEdge. Mostly DUNE and SBND collaborators. +Contacts: + Miscellaneous Contact: + - ID: 888a771df50d76d5e229d97e37949dcca5af5b61 + Name: Shreyas Bhat + VO Manager: + - ID: OSG1000378 + Name: Shekhar Mishra +Disable: false +FieldsOfScience: + PrimaryFields: + - High Energy Physics +ID: 233 +LongName: Artificial Intelligence OnEdge +MembershipServicesURL: https://voms2.fnal.gov:8443/voms/fermilab +OASIS: + OASISRepoURLs: + - http://oasiscfs.fnal.gov:8000/cvmfs/aionedge.opensciencegrid.org + UseOASIS: true +ParentVO: + ID: 9 + Name: Fermilab +PrimaryURL: https://wiki.dunescience.org/wiki/AI-Neutrino_Project_at_ICEBERG +PurposeURL: https://wiki.dunescience.org/wiki/AI-Neutrino_Project_at_ICEBERG +ReportingGroups: +- aionedge +SupportURL: http://fermigrid.fnal.gov/ diff --git a/virtual-organizations/CMS.yaml b/virtual-organizations/CMS.yaml index ded8a5050..c47ee64f7 100644 --- a/virtual-organizations/CMS.yaml +++ b/virtual-organizations/CMS.yaml @@ -30,10 +30,15 @@ Credentials: DefaultUnixUser: cmslocal - Description: USCMS LOCAL pilots - Subject: 091b3617-722c-4720-bdb1-81e4f5ec96e0 + Subject: 99b97e4f-5cf0-4d3b-9fcc-82fa86dca1e8 URL: https://cms-auth.web.cern.ch/ DefaultUnixUser: uscmslocal + - Description: USCMS HEPCloud pilots + Subject: 2f327ad0-1934-4635-8ba3-ee72da0a304c + URL: https://cms-auth.web.cern.ch/ + DefaultUnixUser: uscms + Contacts: Administrative Contact: - ID: 8489f9d11ec9723ae9f11619d325dbfa5516397c diff --git a/virtual-organizations/ET.yaml b/virtual-organizations/ET.yaml new file mode 100644 index 000000000..0abae2e28 --- /dev/null +++ b/virtual-organizations/ET.yaml @@ -0,0 +1,53 @@ +Name: ET +LongName: Einstein Telescope +AppDescription: The Einstein Telescope is a proposed underground infrastructure to host a third-generation, gravitational-wave observatory in Europe. +Community: The Einstein Telescope Scientific Collaboration +CertificateOnly: false +ID: 228 +Contacts: + Administrative Contact: + - ID: f63b159d0c057f82bfe4929353ea943bc0792059 + Name: Stefano Bagnasco + - ID: 7142b387956966f21dfcedf7fa4eef637c15837c + Name: Andres Tanasijczuk + Security Contact: + - ID: f63b159d0c057f82bfe4929353ea943bc0792059 + Name: Stefano Bagnasco + - ID: 7142b387956966f21dfcedf7fa4eef637c15837c + Name: Andres Tanasijczuk + Registration Authority: + - ID: f63b159d0c057f82bfe4929353ea943bc0792059 + Name: Stefano Bagnasco + - ID: 7142b387956966f21dfcedf7fa4eef637c15837c + Name: Andres Tanasijczuk + VO Manager: + - ID: f63b159d0c057f82bfe4929353ea943bc0792059 + Name: Stefano Bagnasco + - ID: 7142b387956966f21dfcedf7fa4eef637c15837c + Name: Andres Tanasijczuk +Disable: false +FieldsOfScience: + PrimaryFields: + - Gravitational Physics + SecondaryFields: + - Astrophysics + - Physics + - Physics and astronomy +PrimaryURL: http://www.et-gw.eu +PurposeURL: http://www.et-gw.eu +SupportURL: http://www.et-gw.eu +OASIS: + UseOASIS: true + OASISRepoURLs: + - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/et-gw.osgstorage.org +DataFederations: + StashCache: + Namespaces: + - Path: /et-gw/PUBLIC + Authorizations: + - PUBLIC + AllowedOrigins: + - UCLouvain-ET-OSDF-Origin + AllowedCaches: + - ANY + DirList: http://et-origin.cism.ucl.ac.be:1094 diff --git a/virtual-organizations/Fermilab.yaml b/virtual-organizations/Fermilab.yaml index e8572cf60..67a605dd6 100644 --- a/virtual-organizations/Fermilab.yaml +++ b/virtual-organizations/Fermilab.yaml @@ -53,8 +53,8 @@ OASIS: OASISRepoURLs: - http://oasiscfs.fnal.gov:8000/cvmfs/fermilab.opensciencegrid.org - http://oasiscfs.fnal.gov:8000/cvmfs/larsoft.opensciencegrid.org - - http://rcds01.fnal.gov:8000/cvmfs/fifeuser1.opensciencegrid.org - - http://rcds01.fnal.gov:8000/cvmfs/fifeuser2.opensciencegrid.org + - http://rcds02.fnal.gov:8000/cvmfs/fifeuser1.opensciencegrid.org + - http://rcds02.fnal.gov:8000/cvmfs/fifeuser2.opensciencegrid.org - http://rcds02.fnal.gov:8000/cvmfs/fifeuser3.opensciencegrid.org - http://rcds02.fnal.gov:8000/cvmfs/fifeuser4.opensciencegrid.org UseOASIS: false @@ -87,6 +87,7 @@ DataFederations: - Path: /pnfs/fnal.gov Authorizations: - PUBLIC - AllowedOrigins: [] # FIXME - Contact StashCache operations to find the resource(s) that should be allowed to serve data under /pnfs/fnal.gov + AllowedOrigins: + - FNAL_OSDF_ORIGIN AllowedCaches: - ANY diff --git a/virtual-organizations/GLOW.yaml b/virtual-organizations/GLOW.yaml index a1b72aa47..716fa663b 100644 --- a/virtual-organizations/GLOW.yaml +++ b/virtual-organizations/GLOW.yaml @@ -49,42 +49,61 @@ ReportingGroups: SupportURL: https://chtc.cs.wisc.edu DataFederations: - StashCache: - Namespaces: - - Path: /chtc/PUBLIC - Authorizations: - - PUBLIC - AllowedOrigins: - - CHTC_STASHCACHE_ORIGIN - - CHTC_STASHCACHE_ORIGIN_2000 - AllowedCaches: - - ANY + StashCache: + Namespaces: + - Path: /chtc/PUBLIC + Authorizations: + - PUBLIC + AllowedOrigins: + - CHTC_STASHCACHE_ORIGIN + - CHTC_STASHCACHE_ORIGIN_2000 + AllowedCaches: + - ANY - - Path: /chtc/PROTECTED - Authorizations: - - FQAN:/GLOW - - DN:/DC=org/DC=cilogon/C=US/O=University of Wisconsin-Madison/CN=Matyas Selmeci A148276 - - SciTokens: - Issuer: https://chtc.cs.wisc.edu - Base Path: /chtc - Map Subject: True - AllowedOrigins: - - CHTC_STASHCACHE_ORIGIN_AUTH_2000 - AllowedCaches: - # TODO: only allowing CHTC caches defeats the purpose of OSDF; allow PRP caches too? - - CHTC_TIGER_CACHE - - CHTC_STASHCACHE_CACHE + - Path: /chtc/itb/helm-origin/PUBLIC + Authorizations: + - PUBLIC + AllowedOrigins: + - CHTC-ITB-HELM-ORIGIN + AllowedCaches: + - ANY - - Path: /chtc/PROTECTED-TESTING - Authorizations: - - FQAN: /GLOW - - DN: /DC=org/DC=cilogon/C=US/O=University of Wisconsin-Madison/CN=Matyas Selmeci A148276 - - SciTokens: - Issuer: https://chtc.cs.wisc.edu - Base Path: /chtc - Map Subject: False - AllowedOrigins: - - CHTC_STASHCACHE_ORIGIN - AllowedCaches: - - ANY + - Path: /chtc/itb/helm-origin/PROTECTED + Authorizations: + - FQAN: /GLOW + - DN: /DC=org/DC=cilogon/C=US/O=University of Wisconsin-Madison/CN=Matyas Selmeci A148276 + - SciTokens: + Issuer: https://chtc.cs.wisc.edu + Base Path: /chtc + Map Subject: False + AllowedOrigins: + - CHTC-ITB-HELM-ORIGIN + AllowedCaches: + - ANY + + - Path: /chtc + Authorizations: + - SciTokens: + Issuer: https://chtc.cs.wisc.edu + Base Path: /chtc + Map Subject: True + AllowedOrigins: + - CHTC_STASHCACHE_ORIGIN_AUTH_2000 + AllowedCaches: + - ANY + Writeback: https://origin-auth2000.chtc.wisc.edu:1095 + DirList: https://origin-auth2000.chtc.wisc.edu:1095 + CredentialGeneration: + BasePath: /chtc + Strategy: OAuth2 + Issuer: https://chtc.cs.wisc.edu + MaxScopeDepth: 3 + + - Path: /data.lhncbc.nlm.nih.gov/public + Authorizations: + - PUBLIC + AllowedOrigins: + - CHTC_NIH_ORIGIN + AllowedCaches: + - ANY diff --git a/virtual-organizations/Gluex.yaml b/virtual-organizations/Gluex.yaml index 5a62ca967..205b58d67 100644 --- a/virtual-organizations/Gluex.yaml +++ b/virtual-organizations/Gluex.yaml @@ -57,6 +57,7 @@ DataFederations: - UConn-OSG_StashCache_origin # UConn-HPC_StashCache_origin serves /gluex/uconn1 (FD #68279) - UConn-HPC_StashCache_origin + - ComputeCanada-Cedar-Cache AllowedCaches: - ANY - Path: /gluex @@ -67,5 +68,6 @@ DataFederations: - UConn-OSG_StashCache_origin # UConn-HPC_StashCache_origin serves /gluex/uconn1 (FD #68279) - UConn-HPC_StashCache_origin + - ComputeCanada-Cedar-Cache AllowedCaches: - ANY diff --git a/virtual-organizations/IceCube.yaml b/virtual-organizations/IceCube.yaml index 59655d1db..4f88356bf 100644 --- a/virtual-organizations/IceCube.yaml +++ b/virtual-organizations/IceCube.yaml @@ -57,3 +57,39 @@ DataFederations: - ANY AllowedOrigins: - IceCube_StashCache_origin + + - Path: /icecube/production/nrpnb/protected + Authorizations: + - SciTokens: + Issuer: https://chtc.cs.wisc.edu/icecube + Base Path: /icecube + Map Subject: False + AllowedOrigins: + - NEBRASKA_NRP_OSDF_ORIGIN + AllowedCaches: + - ANY + Writeback: https://unl-origin.nationalresearchplatform.org:1095 + + - Path: /icecube/production/mghpcc/protected/ + Authorizations: + - SciTokens: + Issuer: https://chtc.cs.wisc.edu/icecube + Base Path: /icecube + Map Subject: False + AllowedOrigins: + - MGHPCC_NRP_OSDF_ORIGIN + AllowedCaches: + - ANY + Writeback: https://mghpcc-origin.nationalresearchplatform.org:1095 + + - Path: /icecube/production/sdsc/protected/ + Authorizations: + - SciTokens: + Issuer: https://chtc.cs.wisc.edu/icecube + Base Path: /icecube + Map Subject: False + AllowedOrigins: + - SDSC_NRP_OSDF_ORIGIN + AllowedCaches: + - ANY + Writeback: http://sdsc-origin.nationalresearchplatform.org:1095 diff --git a/virtual-organizations/JLab.yaml b/virtual-organizations/JLab.yaml index 6d6673b12..8aa9a4a21 100644 --- a/virtual-organizations/JLab.yaml +++ b/virtual-organizations/JLab.yaml @@ -13,8 +13,8 @@ Contacts: Name: Thomas Britton - ID: 4f7ca518bcb0d22ace2497dbebaad8c1539056c3 Name: Bryan Hess - - ID: 220f78ec71de1d727339a292bb91cb0bd52f9f61 - Name: Gregory D. Nowicki + - ID: OSG1000376 + Name: Roger DuBois VO Manager: - ID: 18c37e41b9a7336ff3a7a1793a72eca1b24467df Name: Thomas Britton diff --git a/virtual-organizations/LIGO.yaml b/virtual-organizations/LIGO.yaml index 580ac3713..49bd8fb72 100644 --- a/virtual-organizations/LIGO.yaml +++ b/virtual-organizations/LIGO.yaml @@ -65,6 +65,10 @@ OASIS: - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/ligo.osgstorage.org - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/gwosc.osgstorage.org - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/igwn.osgstorage.org + - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/virgo.storage.igwn.org + - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/ligo.storage.igwn.org + - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/shared.storage.igwn.org + - http://cvmfs-software.ligo.caltech.edu:8000/cvmfs/software.igwn.org UseOASIS: true PrimaryURL: http://www.ligo.org PurposeURL: http://www.ligo.org @@ -78,36 +82,187 @@ DataFederations: - FQAN: /osg/ligo - FQAN: /virgo - FQAN: /virgo/virgo + - FQAN: /virgo/ligo - SciTokens: - Issuer: https://scitokens.org/ligo - Base Path: /user/ligo + Issuer: https://cilogon.org/igwn + Base Path: /user/ligo,/igwn - SciTokens: - Issuer: https://test.cilogon.org/ligo - Base Path: /user/ligo - - SciTokens: - Issuer: https://cilogon.org/ligo - Base Path: /user/ligo + Issuer: https://test.cilogon.org/igwn + Base Path: /user/ligo,/igwn AllowedOrigins: - CIT_LIGO_ORIGIN - LIGO-StashCache-Origin + AllowedCaches: + - SUT-STASHCACHE + - Georgia_Tech_PACE_GridFTP2 + - Stashcache-UCSD + - Stashcache-UofA + - Stashcache-KISTI + - Stashcache-Houston + - Stashcache-Manhattan + - Stashcache-Sunnyvale + - Stashcache-Chicago + - Stashcache-Kansas + - PIC_STASHCACHE_CACHE + - SU_STASHCACHE_CACHE + - PSU-LIGO-CACHE + - MGHPCC_NRP_OSDF_CACHE + - SDSC_NRP_OSDF_CACHE + - NEBRASKA_NRP_OSDF_CACHE + - CINCINNATI_INTERNET2_OSDF_CACHE + - BOISE_INTERNET2_OSDF_CACHE + - T1_STASHCACHE_CACHE + - CARDIFF_UK_OSDF_CACHE + - ComputeCanada-Cedar-Cache + - JACKSONVILLE_INTERNET2_OSDF_CACHE + - DENVER_INTERNET2_OSDF_CACHE + - AMSTERDAM_ESNET_OSDF_CACHE + - LONDON_ESNET_OSDF_CACHE + - HOUSTON2_INTERNET2_OSDF_CACHE + - CIT_LIGO_STASHCACHE + - SINGAPORE_INTERNET2_OSDF_CACHE + - SPRACE_OSDF_CACHE + - Path: /igwn/virgo + Authorizations: + - FQAN: /osg/ligo + - FQAN: /virgo + - FQAN: /virgo/virgo + - FQAN: /virgo/ligo + # No Scitokens issuers because they are duplicated with the /user/ligo path. + # As long as the caches are kept in sync, this below fix should be fine. + # But the problem should be solved either by topology (ideally) or the SciTokens XRootD plugin. + - SciTokens: + Issuer: https://cilogon.org/igwn + Base Path: /user/ligo,/igwn + - SciTokens: + Issuer: https://test.cilogon.org/igwn + Base Path: /user/ligo,/igwn + AllowedOrigins: - UCL-Virgo-StashCache-Origin AllowedCaches: - SUT-STASHCACHE - - HCC-Stash - Georgia_Tech_PACE_GridFTP2 - Stashcache-UCSD - Stashcache-UofA - - Stashcache-Cardiff - Stashcache-KISTI - Stashcache-Houston - Stashcache-Manhattan - Stashcache-Sunnyvale - Stashcache-Chicago - Stashcache-Kansas + - PIC_STASHCACHE_CACHE + - SU_STASHCACHE_CACHE + - PSU-LIGO-CACHE + - MGHPCC_NRP_OSDF_CACHE + - SDSC_NRP_OSDF_CACHE + - NEBRASKA_NRP_OSDF_CACHE + - CINCINNATI_INTERNET2_OSDF_CACHE + - BOISE_INTERNET2_OSDF_CACHE - T1_STASHCACHE_CACHE + - CARDIFF_UK_OSDF_CACHE + - ComputeCanada-Cedar-Cache + - JACKSONVILLE_INTERNET2_OSDF_CACHE + - DENVER_INTERNET2_OSDF_CACHE + - AMSTERDAM_ESNET_OSDF_CACHE + - LONDON_ESNET_OSDF_CACHE + - HOUSTON2_INTERNET2_OSDF_CACHE + - CIT_LIGO_STASHCACHE + - SINGAPORE_INTERNET2_OSDF_CACHE + - SPRACE_OSDF_CACHE + - Path: /igwn/ligo + Authorizations: + - FQAN: /osg/ligo + - FQAN: /virgo + - FQAN: /virgo/virgo + - FQAN: /virgo/ligo + # No Scitokens issuers because they are duplicated with the /user/ligo path. + # As long as the caches are kept in sync, this below fix should be fine. + # But the problem should be solved either by topology (ideally) or the SciTokens XRootD plugin. + - SciTokens: + Issuer: https://cilogon.org/igwn + Base Path: /user/ligo,/igwn + - SciTokens: + Issuer: https://test.cilogon.org/igwn + Base Path: /user/ligo,/igwn + AllowedOrigins: + - CIT_LIGO_ORIGIN_IFO + AllowedCaches: + - SUT-STASHCACHE + - Georgia_Tech_PACE_GridFTP2 + - Stashcache-UCSD + - Stashcache-UofA + - Stashcache-KISTI + - Stashcache-Houston + - Stashcache-Manhattan + - Stashcache-Sunnyvale + - Stashcache-Chicago + - Stashcache-Kansas - PIC_STASHCACHE_CACHE - SU_STASHCACHE_CACHE - PSU-LIGO-CACHE + - MGHPCC_NRP_OSDF_CACHE + - SDSC_NRP_OSDF_CACHE + - NEBRASKA_NRP_OSDF_CACHE + - CINCINNATI_INTERNET2_OSDF_CACHE + - BOISE_INTERNET2_OSDF_CACHE + - T1_STASHCACHE_CACHE + - CARDIFF_UK_OSDF_CACHE + - ComputeCanada-Cedar-Cache + - JACKSONVILLE_INTERNET2_OSDF_CACHE + - DENVER_INTERNET2_OSDF_CACHE + - AMSTERDAM_ESNET_OSDF_CACHE + - LONDON_ESNET_OSDF_CACHE + - HOUSTON2_INTERNET2_OSDF_CACHE + - CIT_LIGO_STASHCACHE + - SINGAPORE_INTERNET2_OSDF_CACHE + - SPRACE_OSDF_CACHE + - Path: /igwn/shared + Authorizations: + - FQAN: /osg/ligo + - FQAN: /virgo + - FQAN: /virgo/virgo + - FQAN: /virgo/ligo + # No Scitokens issuers because they are duplicated with the /user/ligo path. + # As long as the caches are kept in sync, this below fix should be fine. + # But the problem should be solved either by topology (ideally) or the SciTokens XRootD plugin. + - SciTokens: + Issuer: https://cilogon.org/igwn + Base Path: /user/ligo,/igwn + - SciTokens: + Issuer: https://test.cilogon.org/igwn + Base Path: /user/ligo,/igwn + AllowedOrigins: + - CIT_LIGO_ORIGIN_SHARED + AllowedCaches: + - SUT-STASHCACHE + - Georgia_Tech_PACE_GridFTP2 + - Stashcache-UCSD + - Stashcache-UofA + - Stashcache-KISTI + - Stashcache-Houston + - Stashcache-Manhattan + - Stashcache-Sunnyvale + - Stashcache-Chicago + - Stashcache-Kansas + - PIC_STASHCACHE_CACHE + - SU_STASHCACHE_CACHE + - PSU-LIGO-CACHE + - MGHPCC_NRP_OSDF_CACHE + - SDSC_NRP_OSDF_CACHE + - NEBRASKA_NRP_OSDF_CACHE + - CINCINNATI_INTERNET2_OSDF_CACHE + - BOISE_INTERNET2_OSDF_CACHE + - T1_STASHCACHE_CACHE + - CARDIFF_UK_OSDF_CACHE + - ComputeCanada-Cedar-Cache + - JACKSONVILLE_INTERNET2_OSDF_CACHE + - DENVER_INTERNET2_OSDF_CACHE + - AMSTERDAM_ESNET_OSDF_CACHE + - LONDON_ESNET_OSDF_CACHE + - HOUSTON2_INTERNET2_OSDF_CACHE + - CIT_LIGO_STASHCACHE + - SINGAPORE_INTERNET2_OSDF_CACHE + - SPRACE_OSDF_CACHE - Path: /gwdata Authorizations: - PUBLIC diff --git a/virtual-organizations/NRP.yaml b/virtual-organizations/NRP.yaml new file mode 100644 index 000000000..0aca031ea --- /dev/null +++ b/virtual-organizations/NRP.yaml @@ -0,0 +1,53 @@ +AppDescription: This VO supports multiple sciences on NRP +CertificateOnly: false +Community: The NRP VO will support users and experiments that are small enough not to warrant their own separate VO. +Contacts: + Administrative Contact: + - ID: OSG1000162 + Name: Fabio Andrijauskas + Security Contact: + - ID: OSG1000162 + Name: Fabio Andrijauskas + Sponsors: + - ID: c412f5f57dca8fe5c73fb3bc4e86bcf243e9edf7 + Name: Frank Wuerthwein + VO Manager: + - ID: OSG1000162 + Name: Fabio Andrijauskas +Credentials: + TokenIssuers: + - URL: https://scitokens.org/nrp + DefaultUnixUser: nrp +Disable: false +FieldsOfScience: + PrimaryFields: + - Multi-Science Community +ID: 232 +LongName: National research platform origin + +PrimaryURL: https://nationalresearchplatform.org +PurposeURL: https://nationalresearchplatform.org +ReportingGroups: +- nrp +SupportURL: https://nationalresearchplatform.org + +DataFederations: + StashCache: + Namespaces: + - Path: /nrp + Authorizations: + - PUBLIC + AllowedOrigins: + - SDSC_NRP_OSDF_ORIGIN + AllowedCaches: + - ANY + - Path: /nrp/protected/sio/MODIS_Aqua_microphysics_images/ + Authorizations: + - SciTokens: + Issuer: https://token.nationalresearchplatform.org/modis + Base Path: /nrp/protected/sio/MODIS_Aqua_microphysics_images/ + Map Subject: False + AllowedOrigins: + - SDSC_NRP_OSDF_ORIGIN + AllowedCaches: + - ANY diff --git a/virtual-organizations/NSG.yaml b/virtual-organizations/NSG.yaml new file mode 100644 index 000000000..8d2726e9e --- /dev/null +++ b/virtual-organizations/NSG.yaml @@ -0,0 +1,34 @@ +Name: NSG +LongName: Neuroscience Gateway +# AppDescription is a brief description of the VO +AppDescription: A Portal for Computational Neuroscience +Community: The Neuroscience Gateway (NSG) project facilitates access and use of the NSF-funded HPC, HTC, and academic cloud computing resources by neuroscientists. +CertificateOnly: false +ID: 231 +Contacts: + Administrative Contact: + - ID: 5cb19c49b0d5fff51f9bff3827f1be928303a54b + Name: Marty Kandes + Security Contact: + - ID: 5cb19c49b0d5fff51f9bff3827f1be928303a54b + Name: Marty Kandes +FieldsOfScience: + PrimaryFields: + - Neuroscience +PrimaryURL: https://www.nsgportal.org +PurposeURL: https://www.nsgportal.org/overview.html +SupportURL: nsghelp@sdsc.edu + +### DataFederations (optional) is information about data federations that the VO is part of +### This template is for the StashCache data federation; for instructions, +### see the documentation at https://opensciencegrid.org/docs/data/stashcache/vo-data/ +DataFederations: + StashCache: + Namespaces: + - Path: /NSG/PUBLIC + Authorizations: + - PUBLIC + AllowedOrigins: + - RDS_OSDF_ORIGIN + AllowedCaches: + - ANY diff --git a/virtual-organizations/OSG.yaml b/virtual-organizations/OSG.yaml index 169086298..7ef021a76 100644 --- a/virtual-organizations/OSG.yaml +++ b/virtual-organizations/OSG.yaml @@ -57,6 +57,7 @@ OASIS: - http://cvmfs.xsede.org:8000/cvmfs/colorado.xsede.org - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/singularity.opensciencegrid.org - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/scitokens.osgstorage.org + - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/sdsc-nrp-osdf-origin.osgstorage.org - http://osg-cvmfs.grid.uchicago.edu:8000/cvmfs/veritas.opensciencegrid.org - http://osg-cvmfs.grid.uchicago.edu:8000/cvmfs/nexo.opensciencegrid.org - http://osg-cvmfs.grid.uchicago.edu:8000/cvmfs/connect.opensciencegrid.org @@ -108,11 +109,23 @@ DataFederations: - OSGCONNECT_ORIGIN AllowedCaches: - ANY + + # HACK: enormous hack to get us going on a demo + # https://opensciencegrid.atlassian.net/browse/SOFTWARE-5398 + # FIXME: rip this out after the demo + # TODO: Redesign namespace interface (take 3?). See commit body + # for considerations. + + # NOTE: The SciTokens blocks for Issuer "https://osg-htc.org/ospool" must be the same + # between the paths /ospool/PROTECTED, /s3.amazonaws.com/us-east-1, and + # /s3.amazonaws.com/us-west-1 below or we will see problems. + # See c3524138ac8d46eee2a3c33cb75fac50acab41c4 for more information. + - Path: /ospool/PROTECTED Authorizations: - SciTokens: Issuer: https://osg-htc.org/ospool - Base Path: /ospool/PROTECTED + Base Path: /ospool/PROTECTED,/s3.amazonaws.com/us-east-1,/s3.amazonaws.com/us-west-1 Map Subject: True AllowedOrigins: - CHTC_OSPOOL_ORIGIN @@ -120,10 +133,113 @@ DataFederations: - ANY Writeback: https://origin-auth2001.chtc.wisc.edu:1095 DirList: https://origin-auth2001.chtc.wisc.edu:1095 + CredentialGeneration: + Strategy: OAuth2 + Issuer: https://osg-htc.org/ospool + MaxScopeDepth: 4 + + - Path: /s3.amazonaws.com/us-east-1 + Authorizations: + - SciTokens: + Issuer: https://osg-htc.org/ospool + Base Path: /ospool/PROTECTED,/s3.amazonaws.com/us-east-1,/s3.amazonaws.com/us-west-1 + Map Subject: True + AllowedOrigins: + - CHTC-ITB-S3-AWS-EAST-ORIGIN + AllowedCaches: + - ANY + Writeback: https://s3-us-east-1.osgdev.chtc.io:1095 + DirList: https://s3-us-east-1.osgdev.chtc.io:1095 + + - Path: /s3.amazonaws.com/us-west-1 + Authorizations: + - SciTokens: + Issuer: https://osg-htc.org/ospool + Base Path: /ospool/PROTECTED,/s3.amazonaws.com/us-east-1,/s3.amazonaws.com/us-west-1 + Map Subject: True + AllowedOrigins: + - CHTC-ITB-S3-AWS-WEST-ORIGIN + AllowedCaches: + - ANY + Writeback: https://s3-us-west-1.osgdev.chtc.io:1095 + DirList: https://s3-us-west-1.osgdev.chtc.io:1095 + - Path: /osdftest Authorizations: - PUBLIC AllowedOrigins: + - MGHPCC_NRP_OSDF_ORIGIN + - NEBRASKA_NRP_OSDF_ORIGIN + - SDSC_NRP_OSDF_ORIGIN - SDSC-test-Origin + - SINGAPORE_INTERNET2_OSDF_CACHE + AllowedCaches: + - ANY + + - Path: /ospool/ap20/data + Authorizations: + - SciTokens: + Issuer: https://ap20.uc.osg-htc.org:1094/ospool/ap20 + Base Path: /ospool/ap20 + Map Subject: True + AllowedOrigins: + - UChicago_OSGConnect_ap20 + AllowedCaches: + - ANY + Writeback: https://ap20.uc.osg-htc.org:1095 + DirList: https://ap20.uc.osg-htc.org:1095 + CredentialGeneration: + Strategy: OAuth2 + Issuer: https://osg-htc.org/ospool + MaxScopeDepth: 4 + + - Path: /ospool/ap21/data + Authorizations: + - SciTokens: + Issuer: https://ap21.uc.osg-htc.org:1094/ospool/ap21 + Base Path: /ospool/ap21 + Map Subject: True + AllowedOrigins: + - UChicago_OSGConnect_ap21 + AllowedCaches: + - ANY + Writeback: https://ap21.uc.osg-htc.org:1095 + DirList: https://ap21.uc.osg-htc.org:1095 + CredentialGeneration: + Strategy: OAuth2 + Issuer: https://osg-htc.org/ospool + MaxScopeDepth: 4 + + - Path: /ospool/ap22/data + Authorizations: + - SciTokens: + Issuer: https://ap22.uc.osg-htc.org:1094/ospool/ap22 + Base Path: /ospool/ap22 + Map Subject: True + AllowedOrigins: + - UChicago_OSGConnect_ap22 + AllowedCaches: + - ANY + Writeback: https://ap22.uc.osg-htc.org:1095 + DirList: https://ap22.uc.osg-htc.org:1095 + CredentialGeneration: + Strategy: OAuth2 + Issuer: https://osg-htc.org/ospool + MaxScopeDepth: 4 + + - Path: /ospool/uc-shared + Authorizations: + - SciTokens: + Issuer: https://osg-htc.org/ospool/uc-shared + Base Path: /ospool/uc-shared + Map Subject: True + AllowedOrigins: + - UChicago_OSGConnect_ap23 AllowedCaches: - ANY + Writeback: https://ap23.uc.osg-htc.org:1095 + DirList: https://ap23.uc.osg-htc.org:1095 + CredentialGeneration: + Strategy: OAuth2 + Issuer: https://osg-htc.org/ospool/uc-shared + MaxScopeDepth: 4 diff --git a/virtual-organizations/PATh.yaml b/virtual-organizations/PATh.yaml new file mode 100644 index 000000000..a9f39bd7b --- /dev/null +++ b/virtual-organizations/PATh.yaml @@ -0,0 +1,117 @@ +Name: PATh +LongName: Partnership to Advance Throughput Computing +# AppDescription is a brief description of the VO +AppDescription: >- + The Partnership to Advance Throughput Computing (PATh) is a project funded by NSF’s OAC Campus Cyberinfrastructure (CC*) program in order to address the needs of the rapidly growing community of faculty and students who are embracing Distributed High Throughput Computing (dHTC) technologies and services to advance their research. + +# Community is the description of the community the VO belongs to +Community: Users of Distributed High Throughput Computing + +CertificateOnly: false + +ID: 226 + +Contacts: + # Administrative Contact is a list of people to contact regarding administrative issues + Administrative Contact: + - ID: 48e1c2f26dc3479a6cf9b2de7c79d654ac27b1d1 + Name: Miron Livny + - ID: OSG1000001 + Name: Brian Bockelman + - ID: OSG1000018 + Name: Christina Koch + + # Security Contact is a list of people to contact regarding security issues + Security Contact: + - ID: OSG1000001 + Name: Brian Bockelman + - ID: OSG1000015 + Name: Aaron Moate + + +### Credentials (optional) define mappings of auth methods to Unix users for this VO +# Credentials: +##### TokenIssuers (optional) is a list of mappings for SciTokens issuers +# # TokenIssuers: +# ### URL is the https URL of your scitokens issuer, e.g. https://scitokens.org/ +# ### DefaultUnixUser is a username that jobs with tokens issued by this issuer should map to +# ### Description (optional) is human-readable text describing the mapping +# ### Subject (optional) is a token subject to restrict this mapping to +# # - URL: +# # DefaultUnixUser: +# # Description: +# # Subject: + +FieldsOfScience: + + # PrimaryFields are the fields of science this VO mostly deals with + PrimaryFields: + - Multi-Science Community + + ### SecondaryFields (optional) are fields of science this VO occasionally deals with + # SecondaryFields: + # - + # - ... + +# PrimaryURL is for general information about the VO +PrimaryURL: https://path-cc.io +# PurposeURL explains the VO's purpose +PurposeURL: https://path-cc.io/about/ +# SupportURL is for support issues +SupportURL: https://path-cc.io/contact/ + +DataFederations: + StashCache: + Namespaces: + - Path: /path-facility/data + Authorizations: + - SciTokens: + Issuer: https://path-cc.io + Base Path: /path-facility/data,/path-facility/development/,/path-facility/projects + Map Subject: True + AllowedOrigins: + - CHTC-PATH-ORIGIN + AllowedCaches: + # Internet2 caches: + - Stashcache-Chicago + - Stashcache-Kansas + - Stashcache-Houston + - Stashcache-Manhattan + - Stashcache-Sunnyvale + # CHTC + - CHTC_TIGER_CACHE + Writeback: https://ap1-origin.facility.path-cc.io:1095 + DirList: https://ap1-origin.facility.path-cc.io:1095 + + - Path: /path-facility/projects + Authorizations: + - SciTokens: + Issuer: https://path-cc.io + Base Path: /path-facility/data,/path-facility/development/,/path-facility/projects + Map Subject: True + AllowedOrigins: + - CHTC-PATH-ORIGIN + AllowedCaches: + # Internet2 caches: + - Stashcache-Chicago + - Stashcache-Kansas + - Stashcache-Houston + - Stashcache-Manhattan + - Stashcache-Sunnyvale + # CHTC + - CHTC_TIGER_CACHE + Writeback: https://ap1-origin.facility.path-cc.io:1095 + DirList: https://ap1-origin.facility.path-cc.io:1095 + + - Path: /path-facility/development + Authorizations: + - SciTokens: + Issuer: https://path-cc.io + Base Path: /path-facility/data,/path-facility/development/,/path-facility/projects + Map Subject: True + AllowedOrigins: + - CHTC-ITB-PATH-ORIGIN + AllowedCaches: + - ANY + Writeback: https://path-origin.osgdev.chtc.io:1095 + DirList: https://path-origin.osgdev.chtc.io:1095 diff --git a/virtual-organizations/UCSD.yaml b/virtual-organizations/UCSD.yaml new file mode 100644 index 000000000..cb650396f --- /dev/null +++ b/virtual-organizations/UCSD.yaml @@ -0,0 +1,41 @@ +AppDescription: This VO supports multiple sciences on UCSD +CertificateOnly: false +Community: The UCSD VO will support users and experiments from UCSD. +Contacts: + Administrative Contact: + - ID: OSG1000162 + Name: Fabio Andrijauskas + Security Contact: + - ID: OSG1000162 + Name: Fabio Andrijauskas + Sponsors: + - ID: c412f5f57dca8fe5c73fb3bc4e86bcf243e9edf7 + Name: Frank Wuerthwein + VO Manager: + - ID: OSG1000162 + Name: Fabio Andrijauskas +Credentials: + TokenIssuers: + - URL: https://scitokens.org/ucsd + DefaultUnixUser: ucsd +Disable: false +FieldsOfScience: + PrimaryFields: + - Multi-Science Community +ID: 234 +LongName: UCSD multiple sciences origin +DataFederations: + StashCache: + Namespaces: + - Path: /ucsd + Authorizations: + - SciTokens: + Issuer: https://token.nationalresearchplatform.org/ucsdphysics + Base Path: /ucsd/physics + Map Subject: False + - PUBLIC + AllowedOrigins: + - SDSC_NRP_OSDF_ORIGIN + AllowedCaches: + - ANY + diff --git a/virtual-organizations/UH.yaml b/virtual-organizations/UH.yaml new file mode 100644 index 000000000..bc19efe3d --- /dev/null +++ b/virtual-organizations/UH.yaml @@ -0,0 +1,33 @@ +AppDescription: University of Hawaii System research data transfer infrastructure +Community: University of Hawaii System Research +CertificateOnly: false +Contacts: + Administrative Contact: + - ID: OSG1000162 + Name: Fabio Andrijauskas +Disable: false +FieldsOfScience: + PrimaryFields: + - Astronomy + - Astrophysics + - Cancer research + - Geosciences +ID: 227 +LongName: University of Hawaii System +OASIS: + Managers: + - Name: Fabio Andrijauskas + ID: OSG1000162 + DNs: + - /DC=org/DC=cilogon/C=US/O=University of California-San Diego/CN=Fabio Andrijauskas A51485301 + UseOASIS: true +DataFederations: + StashCache: + Namespaces: + - Path: /uhawaii/its + Authorizations: + - PUBLIC + AllowedOrigins: + - ITC_OSDF_ORIGIN + AllowedCaches: + - ANY diff --git a/virtual-organizations/IFAHURP-PRP.yaml b/virtual-organizations/UHIFA.yaml similarity index 83% rename from virtual-organizations/IFAHURP-PRP.yaml rename to virtual-organizations/UHIFA.yaml index 0677d951e..b33082d59 100644 --- a/virtual-organizations/IFAHURP-PRP.yaml +++ b/virtual-organizations/UHIFA.yaml @@ -1,10 +1,9 @@ AppDescription: Astronomy and Astrophysics big data from various surveys, simulations and inversions. Community: The Institute for Astronomy, (University of Hawaii, Manoa) conducts fundamental astrophysical research, operates astronomical telescopic surveys and develops instrumentation with many collaborators locally, nationally and globally. CertificateOnly: false -Community: Information Technology Center at the University of Hawaii, Manoa Contacts: Administrative Contact: - - ID: ef5d0be3ec1df913935853ed82396b1eb37a7db0 + - ID: OSG1000162 Name: Fabio Andrijauskas Disable: false FieldsOfScience: @@ -16,12 +15,15 @@ FieldsOfScience: - Solar Spectropolarimetry - Time domain astronomy ID: 225 -LongName: University of Hawaii Information Technology Center +LongName: Institute for Astronomy, (University of Hawaii, Manoa) OASIS: Managers: - Name: Fabio Andrijauskas + ID: OSG1000162 DNs: - /DC=org/DC=cilogon/C=US/O=University of California-San Diego/CN=Fabio Andrijauskas A51485301 + OASISRepoURLs: + - http://hcc-cvmfs-repo.unl.edu:8000/cvmfs/uhawaii.osgstorage.org UseOASIS: true DataFederations: StashCache: @@ -32,4 +34,4 @@ DataFederations: AllowedOrigins: - IFAHURP_OSDF_ORIGIN AllowedCaches: - - ANY \ No newline at end of file + - ANY diff --git a/virtual-organizations/VDC.yaml b/virtual-organizations/VDC.yaml new file mode 100644 index 000000000..ccf1283db --- /dev/null +++ b/virtual-organizations/VDC.yaml @@ -0,0 +1,48 @@ +Name: VDC +LongName: Virtual Data Collaboratory +AppDescription: Virtual Data Collaboratory data services +Community: 'Experiments related to the Virtual Data Collaboratory at the SCI + Institute, University of Utah. It provides an origin for delivering data + services. This VO is currently in testing phase' + +CertificateOnly: false + +ID: 229 + +Contacts: + Administrative Contact: + - ID: OSG1000271 + Name: Ivan Rodero + Security Contact: + - ID: OSG1000271 + Name: Ivan Rodero + Registration Authority: + - ID: OSG1000271 + Name: Ivan Rodero + VO Manager: + - ID: OSG1000271 + Name: Ivan Rodero + +#Disable: false + +FieldsOfScience: + PrimaryFields: + - Computer Science + SecondaryFields: + - Cyberinfrastructure + +PrimaryURL: https://datacollaboratory.org +PurposeURL: https://datacollaboratory.org +SupportURL: https://datacollaboratory.org + +DataFederations: + StashCache: + Namespaces: + - Path: /VDC/PUBLIC + Authorizations: + - PUBLIC + AllowedOrigins: + - Utah-SCI-VDC-ITB-ORIGIN + AllowedCaches: + - ANY +