use of io.grafeas.v1beta1.Occurrence in project java-docs-samples by GoogleCloudPlatform.
the class SamplesTest method testFindVulnerabilitiesForImage.
@Test
public void testFindVulnerabilitiesForImage() throws Exception {
List<Occurrence> result = VulnerabilityOccurrencesForImage.findVulnerabilityOccurrencesForImage(imageUrl, PROJECT_ID);
assertEquals(result.size(), 0);
Occurrence o = CreateOccurrence.createOccurrence(imageUrl, noteId, PROJECT_ID, PROJECT_ID);
int tries = 0;
do {
result = VulnerabilityOccurrencesForImage.findVulnerabilityOccurrencesForImage(imageUrl, PROJECT_ID);
sleep(SLEEP_TIME);
tries += 1;
} while (result.size() != 1 && tries < TRY_LIMIT);
assertEquals(result.size(), 1);
// clean up
String[] nameArr = o.getName().split("/");
String occId = nameArr[nameArr.length - 1];
DeleteOccurrence.deleteOccurrence(occId, PROJECT_ID);
}
use of io.grafeas.v1beta1.Occurrence in project java-docs-samples by GoogleCloudPlatform.
the class SamplesTest method testCreateOccurrence.
@Test
public void testCreateOccurrence() throws Exception {
Occurrence o = CreateOccurrence.createOccurrence(imageUrl, noteId, PROJECT_ID, PROJECT_ID);
String[] nameArr = o.getName().split("/");
String occId = nameArr[nameArr.length - 1];
Occurrence retrieved = GetOccurrence.getOccurrence(occId, PROJECT_ID);
assertEquals(o.getName(), retrieved.getName());
// clean up
DeleteOccurrence.deleteOccurrence(occId, PROJECT_ID);
}
use of io.grafeas.v1beta1.Occurrence 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;
}
use of io.grafeas.v1beta1.Occurrence 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;
}
use of io.grafeas.v1beta1.Occurrence 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;
}
Aggregations