func UnstructuredToNote()

in unstructured/google/containeranalysis/beta/note.go [362:1074]


func UnstructuredToNote(u *unstructured.Resource) (*dclService.Note, error) {
	r := &dclService.Note{}
	if _, ok := u.Object["attestation"]; ok {
		if rAttestation, ok := u.Object["attestation"].(map[string]interface{}); ok {
			r.Attestation = &dclService.NoteAttestation{}
			if _, ok := rAttestation["hint"]; ok {
				if rAttestationHint, ok := rAttestation["hint"].(map[string]interface{}); ok {
					r.Attestation.Hint = &dclService.NoteAttestationHint{}
					if _, ok := rAttestationHint["humanReadableName"]; ok {
						if s, ok := rAttestationHint["humanReadableName"].(string); ok {
							r.Attestation.Hint.HumanReadableName = dcl.String(s)
						} else {
							return nil, fmt.Errorf("r.Attestation.Hint.HumanReadableName: expected string")
						}
					}
				} else {
					return nil, fmt.Errorf("r.Attestation.Hint: expected map[string]interface{}")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Attestation: expected map[string]interface{}")
		}
	}
	if _, ok := u.Object["build"]; ok {
		if rBuild, ok := u.Object["build"].(map[string]interface{}); ok {
			r.Build = &dclService.NoteBuild{}
			if _, ok := rBuild["builderVersion"]; ok {
				if s, ok := rBuild["builderVersion"].(string); ok {
					r.Build.BuilderVersion = dcl.String(s)
				} else {
					return nil, fmt.Errorf("r.Build.BuilderVersion: expected string")
				}
			}
			if _, ok := rBuild["signature"]; ok {
				if rBuildSignature, ok := rBuild["signature"].(map[string]interface{}); ok {
					r.Build.Signature = &dclService.NoteBuildSignature{}
					if _, ok := rBuildSignature["keyId"]; ok {
						if s, ok := rBuildSignature["keyId"].(string); ok {
							r.Build.Signature.KeyId = dcl.String(s)
						} else {
							return nil, fmt.Errorf("r.Build.Signature.KeyId: expected string")
						}
					}
					if _, ok := rBuildSignature["keyType"]; ok {
						if s, ok := rBuildSignature["keyType"].(string); ok {
							r.Build.Signature.KeyType = dclService.NoteBuildSignatureKeyTypeEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Build.Signature.KeyType: expected string")
						}
					}
					if _, ok := rBuildSignature["publicKey"]; ok {
						if s, ok := rBuildSignature["publicKey"].(string); ok {
							r.Build.Signature.PublicKey = dcl.String(s)
						} else {
							return nil, fmt.Errorf("r.Build.Signature.PublicKey: expected string")
						}
					}
					if _, ok := rBuildSignature["signature"]; ok {
						if s, ok := rBuildSignature["signature"].(string); ok {
							r.Build.Signature.Signature = dcl.String(s)
						} else {
							return nil, fmt.Errorf("r.Build.Signature.Signature: expected string")
						}
					}
				} else {
					return nil, fmt.Errorf("r.Build.Signature: expected map[string]interface{}")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Build: expected map[string]interface{}")
		}
	}
	if _, ok := u.Object["createTime"]; ok {
		if s, ok := u.Object["createTime"].(string); ok {
			r.CreateTime = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.CreateTime: expected string")
		}
	}
	if _, ok := u.Object["deployment"]; ok {
		if rDeployment, ok := u.Object["deployment"].(map[string]interface{}); ok {
			r.Deployment = &dclService.NoteDeployment{}
			if _, ok := rDeployment["resourceUri"]; ok {
				if s, ok := rDeployment["resourceUri"].([]interface{}); ok {
					for _, ss := range s {
						if strval, ok := ss.(string); ok {
							r.Deployment.ResourceUri = append(r.Deployment.ResourceUri, strval)
						}
					}
				} else {
					return nil, fmt.Errorf("r.Deployment.ResourceUri: expected []interface{}")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Deployment: expected map[string]interface{}")
		}
	}
	if _, ok := u.Object["discovery"]; ok {
		if rDiscovery, ok := u.Object["discovery"].(map[string]interface{}); ok {
			r.Discovery = &dclService.NoteDiscovery{}
			if _, ok := rDiscovery["analysisKind"]; ok {
				if s, ok := rDiscovery["analysisKind"].(string); ok {
					r.Discovery.AnalysisKind = dclService.NoteDiscoveryAnalysisKindEnumRef(s)
				} else {
					return nil, fmt.Errorf("r.Discovery.AnalysisKind: expected string")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Discovery: expected map[string]interface{}")
		}
	}
	if _, ok := u.Object["expirationTime"]; ok {
		if s, ok := u.Object["expirationTime"].(string); ok {
			r.ExpirationTime = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.ExpirationTime: expected string")
		}
	}
	if _, ok := u.Object["image"]; ok {
		if rImage, ok := u.Object["image"].(map[string]interface{}); ok {
			r.Image = &dclService.NoteImage{}
			if _, ok := rImage["fingerprint"]; ok {
				if rImageFingerprint, ok := rImage["fingerprint"].(map[string]interface{}); ok {
					r.Image.Fingerprint = &dclService.NoteImageFingerprint{}
					if _, ok := rImageFingerprint["v1Name"]; ok {
						if s, ok := rImageFingerprint["v1Name"].(string); ok {
							r.Image.Fingerprint.V1Name = dcl.String(s)
						} else {
							return nil, fmt.Errorf("r.Image.Fingerprint.V1Name: expected string")
						}
					}
					if _, ok := rImageFingerprint["v2Blob"]; ok {
						if s, ok := rImageFingerprint["v2Blob"].([]interface{}); ok {
							for _, ss := range s {
								if strval, ok := ss.(string); ok {
									r.Image.Fingerprint.V2Blob = append(r.Image.Fingerprint.V2Blob, strval)
								}
							}
						} else {
							return nil, fmt.Errorf("r.Image.Fingerprint.V2Blob: expected []interface{}")
						}
					}
					if _, ok := rImageFingerprint["v2Name"]; ok {
						if s, ok := rImageFingerprint["v2Name"].(string); ok {
							r.Image.Fingerprint.V2Name = dcl.String(s)
						} else {
							return nil, fmt.Errorf("r.Image.Fingerprint.V2Name: expected string")
						}
					}
				} else {
					return nil, fmt.Errorf("r.Image.Fingerprint: expected map[string]interface{}")
				}
			}
			if _, ok := rImage["resourceUrl"]; ok {
				if s, ok := rImage["resourceUrl"].(string); ok {
					r.Image.ResourceUrl = dcl.String(s)
				} else {
					return nil, fmt.Errorf("r.Image.ResourceUrl: expected string")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Image: expected map[string]interface{}")
		}
	}
	if _, ok := u.Object["longDescription"]; ok {
		if s, ok := u.Object["longDescription"].(string); ok {
			r.LongDescription = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.LongDescription: expected string")
		}
	}
	if _, ok := u.Object["name"]; ok {
		if s, ok := u.Object["name"].(string); ok {
			r.Name = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.Name: expected string")
		}
	}
	if _, ok := u.Object["package"]; ok {
		if rPackage, ok := u.Object["package"].(map[string]interface{}); ok {
			r.Package = &dclService.NotePackage{}
			if _, ok := rPackage["distribution"]; ok {
				if s, ok := rPackage["distribution"].([]interface{}); ok {
					for _, o := range s {
						if objval, ok := o.(map[string]interface{}); ok {
							var rPackageDistribution dclService.NotePackageDistribution
							if _, ok := objval["architecture"]; ok {
								if s, ok := objval["architecture"].(string); ok {
									rPackageDistribution.Architecture = dclService.NotePackageDistributionArchitectureEnumRef(s)
								} else {
									return nil, fmt.Errorf("rPackageDistribution.Architecture: expected string")
								}
							}
							if _, ok := objval["cpeUri"]; ok {
								if s, ok := objval["cpeUri"].(string); ok {
									rPackageDistribution.CpeUri = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rPackageDistribution.CpeUri: expected string")
								}
							}
							if _, ok := objval["description"]; ok {
								if s, ok := objval["description"].(string); ok {
									rPackageDistribution.Description = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rPackageDistribution.Description: expected string")
								}
							}
							if _, ok := objval["latestVersion"]; ok {
								if rPackageDistributionLatestVersion, ok := objval["latestVersion"].(map[string]interface{}); ok {
									rPackageDistribution.LatestVersion = &dclService.NotePackageDistributionLatestVersion{}
									if _, ok := rPackageDistributionLatestVersion["epoch"]; ok {
										if i, ok := rPackageDistributionLatestVersion["epoch"].(int64); ok {
											rPackageDistribution.LatestVersion.Epoch = dcl.Int64(i)
										} else {
											return nil, fmt.Errorf("rPackageDistribution.LatestVersion.Epoch: expected int64")
										}
									}
									if _, ok := rPackageDistributionLatestVersion["fullName"]; ok {
										if s, ok := rPackageDistributionLatestVersion["fullName"].(string); ok {
											rPackageDistribution.LatestVersion.FullName = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rPackageDistribution.LatestVersion.FullName: expected string")
										}
									}
									if _, ok := rPackageDistributionLatestVersion["kind"]; ok {
										if s, ok := rPackageDistributionLatestVersion["kind"].(string); ok {
											rPackageDistribution.LatestVersion.Kind = dclService.NotePackageDistributionLatestVersionKindEnumRef(s)
										} else {
											return nil, fmt.Errorf("rPackageDistribution.LatestVersion.Kind: expected string")
										}
									}
									if _, ok := rPackageDistributionLatestVersion["name"]; ok {
										if s, ok := rPackageDistributionLatestVersion["name"].(string); ok {
											rPackageDistribution.LatestVersion.Name = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rPackageDistribution.LatestVersion.Name: expected string")
										}
									}
									if _, ok := rPackageDistributionLatestVersion["revision"]; ok {
										if s, ok := rPackageDistributionLatestVersion["revision"].(string); ok {
											rPackageDistribution.LatestVersion.Revision = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rPackageDistribution.LatestVersion.Revision: expected string")
										}
									}
								} else {
									return nil, fmt.Errorf("rPackageDistribution.LatestVersion: expected map[string]interface{}")
								}
							}
							if _, ok := objval["maintainer"]; ok {
								if s, ok := objval["maintainer"].(string); ok {
									rPackageDistribution.Maintainer = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rPackageDistribution.Maintainer: expected string")
								}
							}
							if _, ok := objval["url"]; ok {
								if s, ok := objval["url"].(string); ok {
									rPackageDistribution.Url = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rPackageDistribution.Url: expected string")
								}
							}
							r.Package.Distribution = append(r.Package.Distribution, rPackageDistribution)
						}
					}
				} else {
					return nil, fmt.Errorf("r.Package.Distribution: expected []interface{}")
				}
			}
			if _, ok := rPackage["name"]; ok {
				if s, ok := rPackage["name"].(string); ok {
					r.Package.Name = dcl.String(s)
				} else {
					return nil, fmt.Errorf("r.Package.Name: expected string")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Package: expected map[string]interface{}")
		}
	}
	if _, ok := u.Object["project"]; ok {
		if s, ok := u.Object["project"].(string); ok {
			r.Project = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.Project: expected string")
		}
	}
	if _, ok := u.Object["relatedNoteNames"]; ok {
		if s, ok := u.Object["relatedNoteNames"].([]interface{}); ok {
			for _, ss := range s {
				if strval, ok := ss.(string); ok {
					r.RelatedNoteNames = append(r.RelatedNoteNames, strval)
				}
			}
		} else {
			return nil, fmt.Errorf("r.RelatedNoteNames: expected []interface{}")
		}
	}
	if _, ok := u.Object["relatedUrl"]; ok {
		if s, ok := u.Object["relatedUrl"].([]interface{}); ok {
			for _, o := range s {
				if objval, ok := o.(map[string]interface{}); ok {
					var rRelatedUrl dclService.NoteRelatedUrl
					if _, ok := objval["label"]; ok {
						if s, ok := objval["label"].(string); ok {
							rRelatedUrl.Label = dcl.String(s)
						} else {
							return nil, fmt.Errorf("rRelatedUrl.Label: expected string")
						}
					}
					if _, ok := objval["url"]; ok {
						if s, ok := objval["url"].(string); ok {
							rRelatedUrl.Url = dcl.String(s)
						} else {
							return nil, fmt.Errorf("rRelatedUrl.Url: expected string")
						}
					}
					r.RelatedUrl = append(r.RelatedUrl, rRelatedUrl)
				}
			}
		} else {
			return nil, fmt.Errorf("r.RelatedUrl: expected []interface{}")
		}
	}
	if _, ok := u.Object["shortDescription"]; ok {
		if s, ok := u.Object["shortDescription"].(string); ok {
			r.ShortDescription = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.ShortDescription: expected string")
		}
	}
	if _, ok := u.Object["updateTime"]; ok {
		if s, ok := u.Object["updateTime"].(string); ok {
			r.UpdateTime = dcl.String(s)
		} else {
			return nil, fmt.Errorf("r.UpdateTime: expected string")
		}
	}
	if _, ok := u.Object["vulnerability"]; ok {
		if rVulnerability, ok := u.Object["vulnerability"].(map[string]interface{}); ok {
			r.Vulnerability = &dclService.NoteVulnerability{}
			if _, ok := rVulnerability["cvssScore"]; ok {
				if f, ok := rVulnerability["cvssScore"].(float64); ok {
					r.Vulnerability.CvssScore = dcl.Float64(f)
				} else {
					return nil, fmt.Errorf("r.Vulnerability.CvssScore: expected float64")
				}
			}
			if _, ok := rVulnerability["cvssV3"]; ok {
				if rVulnerabilityCvssV3, ok := rVulnerability["cvssV3"].(map[string]interface{}); ok {
					r.Vulnerability.CvssV3 = &dclService.NoteVulnerabilityCvssV3{}
					if _, ok := rVulnerabilityCvssV3["attackComplexity"]; ok {
						if s, ok := rVulnerabilityCvssV3["attackComplexity"].(string); ok {
							r.Vulnerability.CvssV3.AttackComplexity = dclService.NoteVulnerabilityCvssV3AttackComplexityEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.AttackComplexity: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["attackVector"]; ok {
						if s, ok := rVulnerabilityCvssV3["attackVector"].(string); ok {
							r.Vulnerability.CvssV3.AttackVector = dclService.NoteVulnerabilityCvssV3AttackVectorEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.AttackVector: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["availabilityImpact"]; ok {
						if s, ok := rVulnerabilityCvssV3["availabilityImpact"].(string); ok {
							r.Vulnerability.CvssV3.AvailabilityImpact = dclService.NoteVulnerabilityCvssV3AvailabilityImpactEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.AvailabilityImpact: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["baseScore"]; ok {
						if f, ok := rVulnerabilityCvssV3["baseScore"].(float64); ok {
							r.Vulnerability.CvssV3.BaseScore = dcl.Float64(f)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.BaseScore: expected float64")
						}
					}
					if _, ok := rVulnerabilityCvssV3["confidentialityImpact"]; ok {
						if s, ok := rVulnerabilityCvssV3["confidentialityImpact"].(string); ok {
							r.Vulnerability.CvssV3.ConfidentialityImpact = dclService.NoteVulnerabilityCvssV3ConfidentialityImpactEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.ConfidentialityImpact: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["exploitabilityScore"]; ok {
						if f, ok := rVulnerabilityCvssV3["exploitabilityScore"].(float64); ok {
							r.Vulnerability.CvssV3.ExploitabilityScore = dcl.Float64(f)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.ExploitabilityScore: expected float64")
						}
					}
					if _, ok := rVulnerabilityCvssV3["impactScore"]; ok {
						if f, ok := rVulnerabilityCvssV3["impactScore"].(float64); ok {
							r.Vulnerability.CvssV3.ImpactScore = dcl.Float64(f)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.ImpactScore: expected float64")
						}
					}
					if _, ok := rVulnerabilityCvssV3["integrityImpact"]; ok {
						if s, ok := rVulnerabilityCvssV3["integrityImpact"].(string); ok {
							r.Vulnerability.CvssV3.IntegrityImpact = dclService.NoteVulnerabilityCvssV3IntegrityImpactEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.IntegrityImpact: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["privilegesRequired"]; ok {
						if s, ok := rVulnerabilityCvssV3["privilegesRequired"].(string); ok {
							r.Vulnerability.CvssV3.PrivilegesRequired = dclService.NoteVulnerabilityCvssV3PrivilegesRequiredEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.PrivilegesRequired: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["scope"]; ok {
						if s, ok := rVulnerabilityCvssV3["scope"].(string); ok {
							r.Vulnerability.CvssV3.Scope = dclService.NoteVulnerabilityCvssV3ScopeEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.Scope: expected string")
						}
					}
					if _, ok := rVulnerabilityCvssV3["userInteraction"]; ok {
						if s, ok := rVulnerabilityCvssV3["userInteraction"].(string); ok {
							r.Vulnerability.CvssV3.UserInteraction = dclService.NoteVulnerabilityCvssV3UserInteractionEnumRef(s)
						} else {
							return nil, fmt.Errorf("r.Vulnerability.CvssV3.UserInteraction: expected string")
						}
					}
				} else {
					return nil, fmt.Errorf("r.Vulnerability.CvssV3: expected map[string]interface{}")
				}
			}
			if _, ok := rVulnerability["details"]; ok {
				if s, ok := rVulnerability["details"].([]interface{}); ok {
					for _, o := range s {
						if objval, ok := o.(map[string]interface{}); ok {
							var rVulnerabilityDetails dclService.NoteVulnerabilityDetails
							if _, ok := objval["affectedCpeUri"]; ok {
								if s, ok := objval["affectedCpeUri"].(string); ok {
									rVulnerabilityDetails.AffectedCpeUri = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.AffectedCpeUri: expected string")
								}
							}
							if _, ok := objval["affectedPackage"]; ok {
								if s, ok := objval["affectedPackage"].(string); ok {
									rVulnerabilityDetails.AffectedPackage = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.AffectedPackage: expected string")
								}
							}
							if _, ok := objval["affectedVersionEnd"]; ok {
								if rVulnerabilityDetailsAffectedVersionEnd, ok := objval["affectedVersionEnd"].(map[string]interface{}); ok {
									rVulnerabilityDetails.AffectedVersionEnd = &dclService.NoteVulnerabilityDetailsAffectedVersionEnd{}
									if _, ok := rVulnerabilityDetailsAffectedVersionEnd["epoch"]; ok {
										if i, ok := rVulnerabilityDetailsAffectedVersionEnd["epoch"].(int64); ok {
											rVulnerabilityDetails.AffectedVersionEnd.Epoch = dcl.Int64(i)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionEnd.Epoch: expected int64")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionEnd["fullName"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionEnd["fullName"].(string); ok {
											rVulnerabilityDetails.AffectedVersionEnd.FullName = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionEnd.FullName: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionEnd["kind"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionEnd["kind"].(string); ok {
											rVulnerabilityDetails.AffectedVersionEnd.Kind = dclService.NoteVulnerabilityDetailsAffectedVersionEndKindEnumRef(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionEnd.Kind: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionEnd["name"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionEnd["name"].(string); ok {
											rVulnerabilityDetails.AffectedVersionEnd.Name = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionEnd.Name: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionEnd["revision"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionEnd["revision"].(string); ok {
											rVulnerabilityDetails.AffectedVersionEnd.Revision = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionEnd.Revision: expected string")
										}
									}
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionEnd: expected map[string]interface{}")
								}
							}
							if _, ok := objval["affectedVersionStart"]; ok {
								if rVulnerabilityDetailsAffectedVersionStart, ok := objval["affectedVersionStart"].(map[string]interface{}); ok {
									rVulnerabilityDetails.AffectedVersionStart = &dclService.NoteVulnerabilityDetailsAffectedVersionStart{}
									if _, ok := rVulnerabilityDetailsAffectedVersionStart["epoch"]; ok {
										if i, ok := rVulnerabilityDetailsAffectedVersionStart["epoch"].(int64); ok {
											rVulnerabilityDetails.AffectedVersionStart.Epoch = dcl.Int64(i)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionStart.Epoch: expected int64")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionStart["fullName"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionStart["fullName"].(string); ok {
											rVulnerabilityDetails.AffectedVersionStart.FullName = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionStart.FullName: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionStart["kind"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionStart["kind"].(string); ok {
											rVulnerabilityDetails.AffectedVersionStart.Kind = dclService.NoteVulnerabilityDetailsAffectedVersionStartKindEnumRef(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionStart.Kind: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionStart["name"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionStart["name"].(string); ok {
											rVulnerabilityDetails.AffectedVersionStart.Name = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionStart.Name: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsAffectedVersionStart["revision"]; ok {
										if s, ok := rVulnerabilityDetailsAffectedVersionStart["revision"].(string); ok {
											rVulnerabilityDetails.AffectedVersionStart.Revision = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionStart.Revision: expected string")
										}
									}
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.AffectedVersionStart: expected map[string]interface{}")
								}
							}
							if _, ok := objval["description"]; ok {
								if s, ok := objval["description"].(string); ok {
									rVulnerabilityDetails.Description = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.Description: expected string")
								}
							}
							if _, ok := objval["fixedCpeUri"]; ok {
								if s, ok := objval["fixedCpeUri"].(string); ok {
									rVulnerabilityDetails.FixedCpeUri = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.FixedCpeUri: expected string")
								}
							}
							if _, ok := objval["fixedPackage"]; ok {
								if s, ok := objval["fixedPackage"].(string); ok {
									rVulnerabilityDetails.FixedPackage = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.FixedPackage: expected string")
								}
							}
							if _, ok := objval["fixedVersion"]; ok {
								if rVulnerabilityDetailsFixedVersion, ok := objval["fixedVersion"].(map[string]interface{}); ok {
									rVulnerabilityDetails.FixedVersion = &dclService.NoteVulnerabilityDetailsFixedVersion{}
									if _, ok := rVulnerabilityDetailsFixedVersion["epoch"]; ok {
										if i, ok := rVulnerabilityDetailsFixedVersion["epoch"].(int64); ok {
											rVulnerabilityDetails.FixedVersion.Epoch = dcl.Int64(i)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.FixedVersion.Epoch: expected int64")
										}
									}
									if _, ok := rVulnerabilityDetailsFixedVersion["fullName"]; ok {
										if s, ok := rVulnerabilityDetailsFixedVersion["fullName"].(string); ok {
											rVulnerabilityDetails.FixedVersion.FullName = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.FixedVersion.FullName: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsFixedVersion["kind"]; ok {
										if s, ok := rVulnerabilityDetailsFixedVersion["kind"].(string); ok {
											rVulnerabilityDetails.FixedVersion.Kind = dclService.NoteVulnerabilityDetailsFixedVersionKindEnumRef(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.FixedVersion.Kind: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsFixedVersion["name"]; ok {
										if s, ok := rVulnerabilityDetailsFixedVersion["name"].(string); ok {
											rVulnerabilityDetails.FixedVersion.Name = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.FixedVersion.Name: expected string")
										}
									}
									if _, ok := rVulnerabilityDetailsFixedVersion["revision"]; ok {
										if s, ok := rVulnerabilityDetailsFixedVersion["revision"].(string); ok {
											rVulnerabilityDetails.FixedVersion.Revision = dcl.String(s)
										} else {
											return nil, fmt.Errorf("rVulnerabilityDetails.FixedVersion.Revision: expected string")
										}
									}
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.FixedVersion: expected map[string]interface{}")
								}
							}
							if _, ok := objval["isObsolete"]; ok {
								if b, ok := objval["isObsolete"].(bool); ok {
									rVulnerabilityDetails.IsObsolete = dcl.Bool(b)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.IsObsolete: expected bool")
								}
							}
							if _, ok := objval["packageType"]; ok {
								if s, ok := objval["packageType"].(string); ok {
									rVulnerabilityDetails.PackageType = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.PackageType: expected string")
								}
							}
							if _, ok := objval["severityName"]; ok {
								if s, ok := objval["severityName"].(string); ok {
									rVulnerabilityDetails.SeverityName = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.SeverityName: expected string")
								}
							}
							if _, ok := objval["sourceUpdateTime"]; ok {
								if s, ok := objval["sourceUpdateTime"].(string); ok {
									rVulnerabilityDetails.SourceUpdateTime = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityDetails.SourceUpdateTime: expected string")
								}
							}
							r.Vulnerability.Details = append(r.Vulnerability.Details, rVulnerabilityDetails)
						}
					}
				} else {
					return nil, fmt.Errorf("r.Vulnerability.Details: expected []interface{}")
				}
			}
			if _, ok := rVulnerability["severity"]; ok {
				if s, ok := rVulnerability["severity"].(string); ok {
					r.Vulnerability.Severity = dclService.NoteVulnerabilitySeverityEnumRef(s)
				} else {
					return nil, fmt.Errorf("r.Vulnerability.Severity: expected string")
				}
			}
			if _, ok := rVulnerability["sourceUpdateTime"]; ok {
				if s, ok := rVulnerability["sourceUpdateTime"].(string); ok {
					r.Vulnerability.SourceUpdateTime = dcl.String(s)
				} else {
					return nil, fmt.Errorf("r.Vulnerability.SourceUpdateTime: expected string")
				}
			}
			if _, ok := rVulnerability["windowsDetails"]; ok {
				if s, ok := rVulnerability["windowsDetails"].([]interface{}); ok {
					for _, o := range s {
						if objval, ok := o.(map[string]interface{}); ok {
							var rVulnerabilityWindowsDetails dclService.NoteVulnerabilityWindowsDetails
							if _, ok := objval["cpeUri"]; ok {
								if s, ok := objval["cpeUri"].(string); ok {
									rVulnerabilityWindowsDetails.CpeUri = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityWindowsDetails.CpeUri: expected string")
								}
							}
							if _, ok := objval["description"]; ok {
								if s, ok := objval["description"].(string); ok {
									rVulnerabilityWindowsDetails.Description = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityWindowsDetails.Description: expected string")
								}
							}
							if _, ok := objval["fixingKbs"]; ok {
								if s, ok := objval["fixingKbs"].([]interface{}); ok {
									for _, o := range s {
										if objval, ok := o.(map[string]interface{}); ok {
											var rVulnerabilityWindowsDetailsFixingKbs dclService.NoteVulnerabilityWindowsDetailsFixingKbs
											if _, ok := objval["name"]; ok {
												if s, ok := objval["name"].(string); ok {
													rVulnerabilityWindowsDetailsFixingKbs.Name = dcl.String(s)
												} else {
													return nil, fmt.Errorf("rVulnerabilityWindowsDetailsFixingKbs.Name: expected string")
												}
											}
											if _, ok := objval["url"]; ok {
												if s, ok := objval["url"].(string); ok {
													rVulnerabilityWindowsDetailsFixingKbs.Url = dcl.String(s)
												} else {
													return nil, fmt.Errorf("rVulnerabilityWindowsDetailsFixingKbs.Url: expected string")
												}
											}
											rVulnerabilityWindowsDetails.FixingKbs = append(rVulnerabilityWindowsDetails.FixingKbs, rVulnerabilityWindowsDetailsFixingKbs)
										}
									}
								} else {
									return nil, fmt.Errorf("rVulnerabilityWindowsDetails.FixingKbs: expected []interface{}")
								}
							}
							if _, ok := objval["name"]; ok {
								if s, ok := objval["name"].(string); ok {
									rVulnerabilityWindowsDetails.Name = dcl.String(s)
								} else {
									return nil, fmt.Errorf("rVulnerabilityWindowsDetails.Name: expected string")
								}
							}
							r.Vulnerability.WindowsDetails = append(r.Vulnerability.WindowsDetails, rVulnerabilityWindowsDetails)
						}
					}
				} else {
					return nil, fmt.Errorf("r.Vulnerability.WindowsDetails: expected []interface{}")
				}
			}
		} else {
			return nil, fmt.Errorf("r.Vulnerability: expected map[string]interface{}")
		}
	}
	return r, nil
}