Search in sources :

Example 6 with GrafeasClient

use of io.grafeas.v1.GrafeasClient in project java-docs-samples by GoogleCloudPlatform.

the class GetOccurrence method getOccurrence.

// Retrieves and prints a specified Occurrence from the server
public static Occurrence getOccurrence(String occurrenceId, String projectId) throws IOException, InterruptedException {
    // String occurrenceId = "123-456-789";
    // String projectId = "my-project-id";
    final OccurrenceName occurrenceName = OccurrenceName.of(projectId, occurrenceId);
    // Initialize client that will be used to send requests. After completing all of your requests,
    // call the "close" method on the client to safely clean up any remaining background resources.
    GrafeasClient client = ContainerAnalysisClient.create().getGrafeasClient();
    Occurrence occ = client.getOccurrence(occurrenceName);
    System.out.println(occ);
    return occ;
}
Also used : GrafeasClient(io.grafeas.v1.GrafeasClient) OccurrenceName(io.grafeas.v1.OccurrenceName) Occurrence(io.grafeas.v1.Occurrence)

Example 7 with GrafeasClient

use of io.grafeas.v1.GrafeasClient in project java-docs-samples by GoogleCloudPlatform.

the class PollDiscoveryOccurrenceFinished method pollDiscoveryOccurrenceFinished.

// Repeatedly query the Container Analysis API for the latest discovery occurrence until it is
// either in a terminal state, or the timeout value has been exceeded
public static Occurrence pollDiscoveryOccurrenceFinished(String resourceUrl, String projectId, long timeoutSeconds) throws IOException, TimeoutException, InterruptedException {
    // String resourceUrl = "https://gcr.io/project/image@sha256:123";
    // String projectId = "my-project-id";
    // long timeoutSeconds = 30;
    final String projectName = ProjectName.format(projectId);
    long deadline = System.currentTimeMillis() + timeoutSeconds * 1000;
    // Initialize client that will be used to send requests. After completing all of your requests,
    // call the "close" method on the client to safely clean up any remaining background resources.
    GrafeasClient client = ContainerAnalysisClient.create().getGrafeasClient();
    // find the discovery occurrence using a filter string
    Occurrence discoveryOccurrence = null;
    // vulbnerability discovery occurrences are always associated with the
    // PACKAGE_VULNERABILITY note in the "goog-analysis" GCP project
    String filter = String.format("resourceUrl=\"%s\" AND noteProjectId=\"%s\" AND noteId=\"%s\"", resourceUrl, "goog-analysis", "PACKAGE_VULNERABILITY");
    // [END containeranalysis_poll_discovery_occurrence_finished]
    // the above filter isn't testable, since it looks for occurrences in a locked down project
    // fall back to a more permissive filter for testing
    filter = String.format("kind=\"DISCOVERY\" AND resourceUrl=\"%s\"", resourceUrl);
    // [START containeranalysis_poll_discovery_occurrence_finished]
    while (discoveryOccurrence == null) {
        for (Occurrence o : client.listOccurrences(projectName, filter).iterateAll()) {
            if (o.getDiscovery() != null) {
                // there should be only one valid discovery occurrence returned by the given filter
                discoveryOccurrence = o;
            }
        }
        TimeUnit.SECONDS.sleep(1);
        // check for timeout
        if (System.currentTimeMillis() > deadline) {
            throw new TimeoutException("discovery occurrence not found");
        }
    }
    // wait for discovery occurrence to enter a terminal state
    AnalysisStatus status = AnalysisStatus.PENDING;
    while (status != AnalysisStatus.FINISHED_SUCCESS && status != AnalysisStatus.FINISHED_FAILED && status != AnalysisStatus.FINISHED_UNSUPPORTED) {
        // update the occurrence state
        discoveryOccurrence = client.getOccurrence(discoveryOccurrence.getName());
        status = discoveryOccurrence.getDiscovery().getAnalysisStatus();
        TimeUnit.SECONDS.sleep(1);
        // check for timeout
        if (System.currentTimeMillis() > deadline) {
            throw new TimeoutException("discovery occurrence not in terminal state");
        }
    }
    return discoveryOccurrence;
}
Also used : GrafeasClient(io.grafeas.v1.GrafeasClient) AnalysisStatus(io.grafeas.v1.DiscoveryOccurrence.AnalysisStatus) Occurrence(io.grafeas.v1.Occurrence) DiscoveryOccurrence(io.grafeas.v1.DiscoveryOccurrence) TimeoutException(java.util.concurrent.TimeoutException)

Example 8 with GrafeasClient

use of io.grafeas.v1.GrafeasClient in project java-docs-samples by GoogleCloudPlatform.

the class VulnerabilityOccurrencesForImage method findVulnerabilityOccurrencesForImage.

// Retrieve a list of vulnerability occurrences assoviated with a resource
public static List<Occurrence> findVulnerabilityOccurrencesForImage(String resourceUrl, String projectId) throws IOException {
    // String resourceUrl = "https://gcr.io/project/image@sha256:123";
    // String projectId = "my-project-id";
    final String projectName = ProjectName.format(projectId);
    String filterStr = String.format("kind=\"VULNERABILITY\" AND resourceUrl=\"%s\"", resourceUrl);
    // Initialize client that will be used to send requests. After completing all of your requests,
    // call the "close" method on the client to safely clean up any remaining background resources.
    GrafeasClient client = ContainerAnalysisClient.create().getGrafeasClient();
    LinkedList<Occurrence> vulnerabilitylist = new LinkedList<Occurrence>();
    for (Occurrence o : client.listOccurrences(projectName, filterStr).iterateAll()) {
        vulnerabilitylist.add(o);
    }
    return vulnerabilitylist;
}
Also used : GrafeasClient(io.grafeas.v1.GrafeasClient) Occurrence(io.grafeas.v1.Occurrence) LinkedList(java.util.LinkedList)

Example 9 with GrafeasClient

use of io.grafeas.v1.GrafeasClient in project java-containeranalysis by googleapis.

the class ITGrafeasInteropTest method createsGrafeasClient.

@Test
public void createsGrafeasClient() throws IOException {
    ContainerAnalysisClient client = ContainerAnalysisClient.create(ContainerAnalysisSettings.newBuilder().build());
    GrafeasClient grafeasClient = client.getGrafeasClient();
    ContainerAnalysisSettings settings = client.getSettings();
    GrafeasSettings grafeasSettings = grafeasClient.getSettings();
    assertEquals(settings.getClock(), grafeasSettings.getClock());
    assertEquals(settings.getBackgroundExecutorProvider(), grafeasSettings.getExecutorProvider());
    assertEquals(settings.getEndpoint(), grafeasSettings.getEndpoint());
    assertEquals(settings.getBackgroundExecutorProvider(), grafeasSettings.getExecutorProvider());
    assertEquals(settings.getHeaderProvider(), grafeasSettings.getHeaderProvider());
    assertEquals(settings.getTransportChannelProvider(), grafeasSettings.getTransportChannelProvider());
    assertEquals(settings.getWatchdogCheckInterval(), grafeasSettings.getWatchdogCheckInterval());
    assertEquals(settings.getWatchdogProvider(), grafeasSettings.getWatchdogProvider());
}
Also used : GrafeasClient(io.grafeas.v1.GrafeasClient) GrafeasSettings(io.grafeas.v1.GrafeasSettings) Test(org.junit.Test)

Example 10 with GrafeasClient

use of io.grafeas.v1.GrafeasClient in project java-docs-samples by GoogleCloudPlatform.

the class SamplesTest method testPollDiscoveryOccurrenceFinished.

@Test
public void testPollDiscoveryOccurrenceFinished() throws Exception {
    try {
        // expect fail on first try
        PollDiscoveryOccurrenceFinished.pollDiscoveryOccurrenceFinished(imageUrl, PROJECT_ID, 5);
        Assert.fail("found unexpected discovery occurrence");
    } catch (TimeoutException e) {
    // test passes
    }
    // create discovery note
    Note newNote = Note.newBuilder().setDiscovery(DiscoveryNote.newBuilder().setAnalysisKind(NoteKind.DISCOVERY)).build();
    String discNoteId = "discovery-note-" + (new Date()).getTime();
    NoteName noteName = NoteName.of(PROJECT_ID, discNoteId);
    GrafeasClient client = ContainerAnalysisClient.create().getGrafeasClient();
    client.createNote(ProjectName.format(PROJECT_ID), discNoteId, newNote);
    // create discovery occurrence
    Occurrence newOcc = Occurrence.newBuilder().setNoteName(noteName.toString()).setResourceUri(imageUrl).setDiscovery(DiscoveryOccurrence.newBuilder().setAnalysisStatus(AnalysisStatus.FINISHED_SUCCESS)).build();
    Occurrence result = client.createOccurrence(ProjectName.format(PROJECT_ID), newOcc);
    // poll again
    Occurrence found = PollDiscoveryOccurrenceFinished.pollDiscoveryOccurrenceFinished(imageUrl, PROJECT_ID, 5);
    AnalysisStatus foundStatus = found.getDiscovery().getAnalysisStatus();
    assertEquals(foundStatus, AnalysisStatus.FINISHED_SUCCESS);
    // clean up
    String[] nameArr = found.getName().split("/");
    String occId = nameArr[nameArr.length - 1];
    DeleteOccurrence.deleteOccurrence(occId, PROJECT_ID);
    DeleteNote.deleteNote(discNoteId, PROJECT_ID);
}
Also used : GrafeasClient(io.grafeas.v1.GrafeasClient) VulnerabilityNote(io.grafeas.v1.VulnerabilityNote) DiscoveryNote(io.grafeas.v1.DiscoveryNote) Note(io.grafeas.v1.Note) NoteName(io.grafeas.v1.NoteName) AnalysisStatus(io.grafeas.v1.DiscoveryOccurrence.AnalysisStatus) Occurrence(io.grafeas.v1.Occurrence) VulnerabilityOccurrence(io.grafeas.v1.VulnerabilityOccurrence) DiscoveryOccurrence(io.grafeas.v1.DiscoveryOccurrence) Date(java.util.Date) TimeoutException(java.util.concurrent.TimeoutException) Test(org.junit.Test)

Aggregations

GrafeasClient (io.grafeas.v1.GrafeasClient)14 Occurrence (io.grafeas.v1.Occurrence)9 NoteName (io.grafeas.v1.NoteName)5 Note (io.grafeas.v1.Note)3 DiscoveryOccurrence (io.grafeas.v1.DiscoveryOccurrence)2 AnalysisStatus (io.grafeas.v1.DiscoveryOccurrence.AnalysisStatus)2 OccurrenceName (io.grafeas.v1.OccurrenceName)2 VulnerabilityNote (io.grafeas.v1.VulnerabilityNote)2 VulnerabilityOccurrence (io.grafeas.v1.VulnerabilityOccurrence)2 LinkedList (java.util.LinkedList)2 TimeoutException (java.util.concurrent.TimeoutException)2 Test (org.junit.Test)2 DiscoveryNote (io.grafeas.v1.DiscoveryNote)1 GrafeasSettings (io.grafeas.v1.GrafeasSettings)1 ListNoteOccurrencesRequest (io.grafeas.v1.ListNoteOccurrencesRequest)1 Severity (io.grafeas.v1.Severity)1 Date (java.util.Date)1