Skip to content

Commit

Permalink
necessary changes done in client to support azure container push and …
Browse files Browse the repository at this point in the history
…delete events
  • Loading branch information
vijeyash1 committed Aug 4, 2023
1 parent 0b02b50 commit 39f11fe
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 1 deletion.
43 changes: 42 additions & 1 deletion client/pkg/clickhouse/db_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ type DBInterface interface {
RetriveKubepugEvent() ([]model.Result, error)
RetrieveKubvizEvent() ([]model.DbEvent, error)
InsertContainerEventDockerHub(model.DockerHubBuild)
InsertContainerEventAzure(model.AzureContainerPushEventPayload)
InsertContainerEventGithub(string)
InsertGitCommon(metrics model.GitCommonAttribute, statement dbstatement.DBStatement) error
Close()
Expand Down Expand Up @@ -70,7 +71,7 @@ func NewDBClient(conf *config.Config) (DBInterface, error) {
return nil, err
}

tables := []DBStatement{kubvizTable, rakeesTable, kubePugDepricatedTable, kubepugDeletedTable, ketallTable, trivyTableImage, outdateTable, clickhouseExperimental, containerDockerhubTable, containerGithubTable, kubescoreTable, trivyTableVul, trivyTableMisconfig, dockerHubBuildTable, DBStatement(dbstatement.AzureDevopsTable), DBStatement(dbstatement.GithubTable), DBStatement(dbstatement.GitlabTable), DBStatement(dbstatement.BitbucketTable), DBStatement(dbstatement.GiteaTable)}
tables := []DBStatement{kubvizTable, rakeesTable, kubePugDepricatedTable, kubepugDeletedTable, ketallTable, trivyTableImage, outdateTable, clickhouseExperimental, containerDockerhubTable, containerGithubTable, kubescoreTable, trivyTableVul, trivyTableMisconfig, dockerHubBuildTable, azureContainerPushEventTable, DBStatement(dbstatement.AzureDevopsTable), DBStatement(dbstatement.GithubTable), DBStatement(dbstatement.GitlabTable), DBStatement(dbstatement.BitbucketTable), DBStatement(dbstatement.GiteaTable)}
for _, table := range tables {
if err = splconn.Exec(context.Background(), string(table)); err != nil {
return nil, err
Expand All @@ -89,6 +90,46 @@ func NewDBClient(conf *config.Config) (DBInterface, error) {
}
return &DBClient{splconn: splconn, conn: stdconn, conf: conf}, nil
}
func (c *DBClient) InsertContainerEventAzure(pushEvent model.AzureContainerPushEventPayload) {
var (
tx, _ = c.conn.Begin()
stmt, _ = tx.Prepare(string(InsertAzureContainerPushEvent))
)
defer stmt.Close()
registryURL := pushEvent.Request.Host
repositoryName := pushEvent.Target.Repository
tag := pushEvent.Target.Tag

if tag == "" {
tag = "latest"
}
imageName := registryURL + "/" + repositoryName + ":" + tag
size := pushEvent.Target.Size
shaID := pushEvent.Target.Digest

// Marshaling the pushEvent into a JSON string
pushEventJSON, err := json.Marshal(pushEvent)
if err != nil {
log.Printf("Error while marshaling Azure Container Registry payload: %v", err)
return
}

if _, err := stmt.Exec(
registryURL,
repositoryName,
tag,
imageName,
string(pushEventJSON),
pushEvent.Timestamp,
size,
shaID,
); err != nil {
log.Fatal(err)
}
if err := tx.Commit(); err != nil {
log.Fatal(err)
}
}

func (c *DBClient) InsertRakeesMetrics(metrics model.RakeesMetrics) {
var (
Expand Down
13 changes: 13 additions & 0 deletions client/pkg/clickhouse/statements.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,18 @@ const dockerHubBuildTable DBStatement = `
Event String
) engine=File(TabSeparated)
`
const azureContainerPushEventTable DBStatement = `
CREATE TABLE IF NOT EXISTS azurecontainerpush (
RegistryURL String,
RepositoryName String,
Tag String,
ImageName String,
Event String,
Timestamp String,
Size UInt64,
SHAID String
) engine=File(TabSeparated)
`

const InsertDockerHubBuild DBStatement = "INSERT INTO dockerhubbuild (PushedBy, ImageTag, RepositoryName, DateCreated, Owner, Event) VALUES (?, ?, ?, ?, ?, ?)"
const InsertRakees DBStatement = "INSERT INTO rakkess (ClusterName, Name, Create, Delete, List, Update) VALUES (?, ?, ?, ?, ?, ?)"
Expand All @@ -160,3 +172,4 @@ const InsertKubeScore string = "INSERT INTO kubescore (id, namespace, cluster_na
const InsertTrivyVul string = "INSERT INTO trivy_vul (id, cluster_name, namespace, kind, name, vul_id, vul_vendor_ids, vul_pkg_id, vul_pkg_name, vul_pkg_path, vul_installed_version, vul_fixed_version, vul_title, vul_severity, vul_published_date, vul_last_modified_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?. ?)"
const InsertTrivyImage string = "INSERT INTO trivyimage (id, cluster_name, artifact_name, vul_id, vul_pkg_id, vul_pkg_name, vul_installed_version, vul_fixed_version, vul_title, vul_severity, vul_published_date, vul_last_modified_date) VALUES ( ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
const InsertTrivyMisconfig string = "INSERT INTO trivy_misconfig (id, cluster_name, namespace, kind, name, misconfig_id, misconfig_avdid, misconfig_type, misconfig_title, misconfig_desc, misconfig_msg, misconfig_query, misconfig_resolution, misconfig_severity, misconfig_status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?. ?, ?)"
const InsertAzureContainerPushEvent DBStatement = "INSERT INTO azurecontainerpush (RegistryURL, RepositoryName, Tag, ImageName, Event, Timestamp, Size, SHAID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
11 changes: 11 additions & 0 deletions client/pkg/clients/container_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,17 @@ func (n *NATSContext) SubscribeContainerNats(conn clickhouse.DBInterface) {
} else if repoName == "Github_Registry" {
conn.InsertContainerEventGithub(string(msg.Data))
log.Println("Inserted Github Container metrics:", string(msg.Data))
} else if repoName == "Azure_Container_Registry" {
var pushEvent model.AzureContainerPushEventPayload
err := json.Unmarshal(msg.Data, &pushEvent)
if err != nil {
log.Printf("Error while unmarshaling Azure Container Registry payload: %v", err)
return
}
// Extract the necessary information from pushEvent and insert into ClickHouse
conn.InsertContainerEventAzure(pushEvent)
log.Println("Inserted Azure Container Registry metrics:", string(msg.Data))
}

}, nats.Durable(string(containerConsumer)), nats.ManualAck())
}
File renamed without changes.

0 comments on commit 39f11fe

Please sign in to comment.