Skip to content

Commit

Permalink
Move split_container_image function to sinsp_utils
Browse files Browse the repository at this point in the history
  • Loading branch information
mattpag committed Jun 1, 2018
1 parent 26a086f commit 7091f84
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 46 deletions.
50 changes: 4 additions & 46 deletions userspace/libsinsp/container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -815,52 +815,10 @@ bool sinsp_container_manager::parse_docker(sinsp_container_info* container)
container->m_imageid = imgstr.substr(cpos + 1);
}

auto split_container_image = [](const string &image, string &repo, string &tag, string &digest)
{
auto split = [](const string &src, string &part1, string &part2, const string sep)
{
size_t pos = src.find(sep);
if(pos != string::npos)
{
part1 = src.substr(0, pos);
part2 = src.substr(pos+1);
return true;
}
return false;
};

string rem, rem2, repo1, repo2;

if(!split(image, rem, digest, "@"))
{
rem = image;
}

if(split(rem, repo1, rem2, "/") && repo1.find(":") != string::npos)
{
if(!split(rem2, repo2, tag, ":"))
{
repo2 = rem2;
}
repo = repo1 + "/" + repo2;
}
else
{
if(!split(rem, repo, tag, ":"))
{
repo = rem;
}
}

if(tag.empty())
{
tag = "latest";
}
};
split_container_image(container->m_image,
container->m_imagerepo,
container->m_imagetag,
container->m_imagedigest);
sinsp_utils::split_container_image(container->m_image,
container->m_imagerepo,
container->m_imagetag,
container->m_imagedigest);

if(container->m_imagedigest.empty())
{
Expand Down
43 changes: 43 additions & 0 deletions userspace/libsinsp/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,49 @@ bool sinsp_utils::find_env(std::string &out, const vector<std::string> &env, con
return find_first_env(out, env, keys);
}

void sinsp_utils::split_container_image(const std::string &image, std::string &repo, std::string &tag, std::string &digest)
{
auto split = [](const std::string &src, std::string &part1, std::string &part2, const std::string sep)
{
size_t pos = src.find(sep);
if(pos != std::string::npos)
{
part1 = src.substr(0, pos);
part2 = src.substr(pos+1);
return true;
}
return false;
};

std::string rem, rem2, repo1, repo2;

if(!split(image, rem, digest, "@"))
{
rem = image;
}

if(split(rem, repo1, rem2, "/") && repo1.find(":") != std::string::npos)
{
if(!split(rem2, repo2, tag, ":"))
{
repo2 = rem2;
}
repo = repo1 + "/" + repo2;
}
else
{
if(!split(rem, repo, tag, ":"))
{
repo = rem;
}
}

if(tag.empty())
{
tag = "latest";
}
}

///////////////////////////////////////////////////////////////////////////////
// Time utility functions.
///////////////////////////////////////////////////////////////////////////////
Expand Down
2 changes: 2 additions & 0 deletions userspace/libsinsp/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ class sinsp_utils

static bool find_first_env(std::string &out, const std::vector<std::string> &env, const std::vector<std::string> &keys);
static bool find_env(std::string &out, const std::vector<std::string> &env, const std::string &key);

static void split_container_image(const std::string &image, std::string &repo, std::string &tag, std::string &digest);
};

///////////////////////////////////////////////////////////////////////////////
Expand Down

0 comments on commit 7091f84

Please sign in to comment.